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

静态链表 看不懂啊该怎么处理

2012-04-12 
静态链表 看不懂啊~~~~~~#include stdio.h#define MAXSIZE 1000typedef struct{int dataint cur}compo

静态链表 看不懂啊~~~~~~
#include <stdio.h> 
 #define MAXSIZE 1000 
  
 typedef struct 
 { 
  int data;  
  int cur;  
 }component,SLinkList[MAXSIZE]; 
  
 void InitSpace(SLinkList &space) //初始化 
 { 
  //将一维数组space中各分量链成一个备用链表,space[0].cur为头指针,"0"表示空指针。 
  int i; 
  for(i=0;i <MAXSIZE-1;++i) space[i].cur = i + 1; 
  space[MAXSIZE-1].cur = 0; 
 } 
  
 int Malloc(SLinkList &space) 
 { 
  //若备用空间链表非空,则返回分配的结点下标,否则返回0 
  int i; 
  i = space[0].cur; 
  if(space[0].cur) space[0].cur = space[i].cur; //相当于逐渐向前移 
  return i; 
 } 
  
 void Free(SLinkList &space,int k) 
 { 
  //将下标为k的空闲结点回收到备用链表 
  space[k].cur = space[0].cur; 
  space[0]->cur = k; 
 } 

  
 void difference(SLinkList &space) 
 { 
  //依次输入集合A和B的元素,在一维数组space中建立表示集合(A-B)U(B-A) 
  //的静态链表,S为头指针,假设备用空间足够大,space[0].cur为其头指针。 
   
  InitSpace(space); //初始化备用空间 
  s = Malloc(space); //生成S的头结点 
  r = s; //r指向s的当前最后结点 r取得第一个位置 
  printf("please enter A and B elements\n"); 
  scanf("%d,%d",&m,&n); //输入A和B的元素个数 
  
  for(j=1;j <=m;++j) //建立集合A的链表 
  { 
  i = Malloc(space); //分配结点 i取得第二个位置 
  scanf("%d",&space[i]->data);//输入A元素值 
  space[r].cur = i; //插入到结尾 
  r = i; 
  } 
  space[r]->cur = 0; //尾结点指针为空 
   
  我看不懂这个for循环。分配节点,调用Malloc(space)是 每次从备用空间里取开头的节点?输入值后。
  然后是把上一次插入的节点 链接 到这次分配的这个节点?
  
 }

[解决办法]
注释写的很清楚了,还不明白什么,自己一步步调试看结果
[解决办法]

探讨

我不理解的是:
space[r].cur = i; //插入到结尾
r = i;

在init时就已经把每个节点的cur排好了,可以直接插入数据,为什么还要在赋值一下cur的值?

热点排行