这个算法如何用java实现?
Space AllocBuddy(FreeList &avail, int n)
{
//avail[0..m]为可利用空间表, n为申请分配量, 若有不小于n的空闲块,
//则分配相应的存储块, 并返回其首地址, 否则返回NULL
for(k=0; k <=m && (avail[k].nodesize < n+1 || !avail[k].first); ++k);//查找满足分配要求的子表
if(k> m) return NULL;//分配失败, 返回NULL;
else {//可进行分配
pa = avail[k].first;//指向可分配子表的第一个节点
pre = pa-> llink; suc = pa-> rlink;//分配指向前驱和后继
if(pa == suc) avail[k].first = NULL;//分配后该子表变为空表
else {//从子表删除*pa节点
pre-> rlink = suc; suc-> llink = pre; avail[k].first = suc;
}
}
for(i = 1; avail[k-i].nodesize > = n+1; ++i) {
pi = pa + pow(2, k-i); pi-> rlink = pi; pi -> llink = pi;
pi -> tag = 0; pi -> kval = k-i; avail[k-i].first = pi;
}//将剩余块插入相应子表
pa -> tag = 1; pa -> kval = k-(--i);
return pa;
}
------解决方案--------------------菜鸟,不知道
------解决方案--------------------顶
------解决方案--------------------import java.io.*;
public class List
{
/*用变量来实现表头*/
private Node Head=null;
private Node Tail=null;
private Node Pointer=null;
private int Length=0;
public void deleteAll()
/*清空整个链表*/
{
Head=null;
Tail=null;
Pointer=null;
Length=0;
}
public void reset()
/*链表复位,使第一个结点
成为当前结点*/
{
Pointer=null;
}
public boolean isEmpty()
/*判断链表是否为空*/
{
return(Length==0);
}
public boolean isEnd()
/*判断当前结点是否
为最后一个结点*/
{
if(Length==0)
throw new
java.lang.NullPointerException();