| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 701 人关注过本帖
标题:单链表删除 所有的x值,但为什么一运行就出错?编译没出现问题,希望有朋友 ...
只看楼主 加入收藏
zts的爱
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2016-7-18
结帖率:85.71%
收藏
已结贴  问题点数:10 回复次数:2 
单链表删除 所有的x值,但为什么一运行就出错?编译没出现问题,希望有朋友帮我看下
typedef struct node{
   ElemType data;
   struct node *next;
}Lnode;



程序代码:
Lnode * dele(Lnode *H,ElemType x){
    Lnode *p,*q;
    p=H->next;
    p=H;
          while(p){
              if(p->data==x)
              {
                  q->next=p->next; 
                  free(p);
                  p=q->next;
              }
              else
              {
                  p=p->next ;
                  q=p;
              }
              
          }
          return H;
}





搜索更多相关主题的帖子: 朋友 
2016-08-15 22:00
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:10 
Lnode * dele(Lnode *H,ElemType x){
    Lnode *p,*q;
    p=H->next;
    q=H;                    //这里应该用q=H;吧。            
          while(p){
              if(p->data==x)
              {
                  q->next=p->next;
                  free(p);
                  p=q->next;        //如果链表里还有其它与x相等的这句就有必要,如果没有,这句改成break;
              }
              else
              {
                  q=p;                //先给q赋值。
                  p=p->next ;
              }
              
          }
          return H;  //将这个H改成全局变量吧。毕竟看你的链表应该是有头结点,所以H的值从创建链表后除了赋值时用用就不会改变它的值。
}

上面的修改没有测试,只是看着改下来的。你试试,有问题再说。
2016-08-15 22:47
zts的爱
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2016-7-18
收藏
得分:0 
回复 2楼 linlulu001
我总在检查while 循环忽略了while上面的赋值,太粗心,谢谢
2016-08-16 00:05
快速回复:单链表删除 所有的x值,但为什么一运行就出错?编译没出现问题,希望有 ...
数据加载中...
 
   



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

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