注册 登录
编程论坛 数据结构与算法

带头节点的单链表 insert和delete的定位问题

okayyyy 发布于 2010-08-13 22:27, 1001 次点击
程序代码:
deletelink(la,i)
{//la为带头节点的单链表的头指针
    p=la,j=0;
    while (p->next!=null && j<i-1)//p->next!=null这句话据我理解是判断链表是否为空或表尾
    {
        p=p->next,j++
    }//定位到i的前驱
}


-------------------------------------------------------------------------------------------

insertlink(la,i)
{
    p=la,j=0;
    while (p!=null && j<i-1)//那么这里怎么不是(p->next!=null && j<i-1)

    {
        p=p->next,j++
    }//定位到i的前驱
}
我自己都看的头晕晕

[ 本帖最后由 okayyyy 于 2010-8-13 22:30 编辑 ]
3 回复
#2
okayyyy2010-08-13 22:36
p=la;//la为头结点的指针
 i=0;//位序
  while (p->next!=null)   
{
        p=p->next,i++;
}
p->next!=null和p=null的相同点:都可用来判断是否为 空表 或 表尾
区别:p->next!=null,i∈[0,n]
      p!=null i∈[0,n+1]  

1个晚上的成果,没问题了。  

[ 本帖最后由 okayyyy 于 2010-8-14 06:33 编辑 ]
#3
do8do8do82010-08-14 09:19
先看书上的程序,看完。就自己动手默写出来,背出来,直到可以写出自己的数据结构为止。
数据结构花的时间太多了,会乏味。
#4
okayyyy2010-08-14 10:00
多谢
默写了几遍,就是写不对。
每次定位,都会让我无所适从。
写个程序测试下。
1