首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

这个算法怎么用java实现

2012-02-11 
这个算法如何用java实现?SpaceAllocBuddy(FreeList&avail,intn){//avail[0..m]为可利用空间表,n为申请分配

这个算法如何用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();



  else if(Length==1)

  return true;

  else

  return(cursor()==Tail);

  }

  public Object nextNode()

  /*返回当前结点的下一个结点的值,

并使其成为当前结点*/

  {

  if(Length==1)

  throw new java.util.NoSuchElementException();

  else if(Length==0)

  throw new java.lang.NullPointerException();

  else

  {

  Node temp=cursor();

  Pointer=temp;

  if(temp!=Tail)

  return(temp.next.data);

  else

  throw new java.util.NoSuchElementException();

  }

  }

  public Object currentNode()

  /*返回当前结点的值*/

  {

  Node temp=cursor();

  return temp.data;

  }

  

  public void insert(Object d)

  /*在当前结点前插入一个结点,

并使其成为当前结点*/

  {

  Node e=new Node(d);

  if(Length==0)

  {

  Tail=e;

  Head=e;

  }

  else

  {

  Node temp=cursor();

  e.next=temp;

  if(Pointer==null)

  Head=e;

  else

  Pointer.next=e;

  }

  Length++;

  }

  public int size()

  /*返回链表的大小*/

  {

  return (Length);

  }

  public Object remove()

  /*将当前结点移出链表,下一个结点成为当前结点,如果移出的结点是最后一个结点,则第一个结点成为当前结点*/

  {

  Object temp;

  if(Length==0)

  throw new java.util.NoSuchElementException();

  else if(Length==1)

  {

  temp=Head.data;

  deleteAll();

  }

  else

  {

  Node cur=cursor();

  temp=cur.data;

  if(cur==Head)

  Head=cur.next;

  else if(cur==Tail)

  {

  Pointer.next=null;

  Tail=Pointer;

  reset();

  }

  else

  Pointer.next=cur.next;

  Length--;

  }

  return temp;

  }

  private Node cursor()

  /*返回当前结点的指针*/

  {

  if(Head==null)

  throw new java.lang.NullPointerException();

  else if(Pointer==null)

  return Head;

  else

  return Pointer.next;

  }

  

  public static void main(String[] args)

  /*链表的简单应用举例*/

  {

  List a=new List ();

  for(int i=1;i <=10;i++)



  a.insert(new Integer(i));

  System.out.println(a.currentNode());

  while(!a.isEnd())

  System.out.println(a.nextNode());

  a.reset();

  while(!a.isEnd())

  {

  a.remove();

  }

  a.remove();

  a.reset();

  if(a.isEmpty())

  System.out.println( "There is no Node in List \n ");

  System.in.println( "You can press return to quit\n ");

  try

  {

  System.in.read();

//确保用户看清程序运行结果

  }

  catch(IOException e)

  {}

  }

  }

  class Node

  /*构成链表的结点定义*/

  {

  Object data;

  Node next;

  Node(Object d)

  {

  data=d;

  next=null;

  }

  }
===============================================
以上是链表的简单操作,我没看你的程序
[解决办法]
http://community.csdn.net/Expert/topic/5194/5194317.xml?temp=.1092646
http://community.csdn.net/Expert/topic/5194/5194317.xml?temp=.1092646
http://community.csdn.net/Expert/topic/5194/5194317.xml?temp=.1092646

热点排行