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

希望知道静态链表的解释下哈 本人小弟我不胜感激

2012-03-28 
希望知道静态链表的解释下哈 本人我不胜感激!备用链表初始化:voidinitial(StaticListspace,int*av){intks

希望知道静态链表的解释下哈 本人我不胜感激!
备用链表初始化:

void   initial(StaticList   space,int   *av)

{

int   k;

space[0],cursor=0;/*设置已用静态单连表的头指针指向位置0*/

for(k=0;k <Maxsize-1;k++)   space[k].cursor=k+1;

space[Maxsize-1].cursor=0;/*连链*/

*av=1;/*设置备用链表头指针初值*/

}

为什么他把头指针*av初始化为1,使用中的链表的头指针不是为1吗,这样不会混缴吗?

还有就是关于取备用链表结点的算法

int   getnode(StaticList   space,int     *av)

/*从备用链表摘下一个结点空间,分配给待插入静态连表中的元素*/

{   int   i;

  i=*   av;

  *av=space[*av].cur;

return   i;

}

*av     是不是指取下的备用结点?那是不是从头开始取的?i是指什么? *av=space[*av].cur这句又是什么意思呢?


[解决办法]
*av是取静态数组的元素。而链表的特点仅为前后联系,数组是可以直接索引得。比如在进行添加、删除操作之后,链表的保存顺序就有可能与数组的不同,因此,space[x].cur取得是当前节点的一个与链表顺序有关的标识。
[解决办法]
静态链表是这样的,在一个数组中有两个原素是不用的分别是第0个和第1个,第0个用来指示备用空间的第一个元素的位子,第1个则用来指示第一个链表元素的位子,每当从链表中删除一个元素时.则让该元素成为备用链表的第一个结点,也即让数组的第0个元素指向删除的结点,然后让删除的结点指向原来的备用链表的第1个结点,插入的话类似

热点排行