标题:删除链表中的头结点删不去!但可以删除其他结点!但整个代码又没有什么问题 ...
取消只看楼主
TIMFannie
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2017-10-15
结帖率:84.21%
已结贴  问题点数:20 回复次数:4 
删除链表中的头结点删不去!但可以删除其他结点!但整个代码又没有什么问题,怎么回事?
struct word
{char c[20];                                 
struct word *next;
};                              //这里是结构体定义

void del_word(struct word *head,char *w)      //通过这个函数,我要删去结构体的成员c与字符数组相同的结构体
{    int j,b=0;
     struct word *p1,*p2;
     p1=p2=head;
     while(p1!=NULL)
     {
         for(j=0;p1->c[j]!=0;j++)
       {
         if(p1->c[j]!=w[j])break;
         if(p1->c[j+1]==0&&w[j+1]==0&&p1->c[j]==w[j])
         {
         p2->next=p1->next;
         p1=p1->next;
         b=1;
         break;
         }
        }
       if(b==1)b=0;
       else
       {
               p2=p1;
            p1=p1->next;  
           
           }
      
     }
}                               //通过这个函数,我发现如果要删除的成员位于头结点我不能够删掉该结点。但可以删除除头结点外的其他结点,为什么呢?求详解!!!!!
搜索更多相关主题的帖子: 删除 结点 struct word next 
2018-01-09 22:21
TIMFannie
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2017-10-15
得分:0 
头结点删不去,即使free()了头节点处还是乱码
2018-01-09 22:52
TIMFannie
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2017-10-15
得分:0 
回复 3楼 林月儿
奥,首结点那里p1与p2根本没改变head。谢谢姐姐
2018-01-10 00:41
TIMFannie
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2017-10-15
得分:0 
回复 3楼 林月儿
将函数弄成有返回值就成功了,为什么void就改变不了首结点,不是传了head的地址过去了吗

[此贴子已经被作者于2018-1-10 01:36编辑过]

2018-01-10 00:48
TIMFannie
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2017-10-15
得分:0 
回复 7楼 林月儿
那我就这么记了,感谢
2018-01-10 12:26



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-484115-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.239425 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved