CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

有关单链表删除, 不知错在哪,大虾帮忙看看??

楼主com8888(com)2004-01-04 16:27:58 在 C/C++ / C语言 提问

//单链  
  #   include   <stdio.h>  
  #   include   <stdlib.h>  
  typedef   struct   link  
  {  
  char   data;  
  struct   link   *next;  
  }node;  
  //==================  
  node   *   create_(node   *head)  
  {  
  char   x;  
  node   *p,*s;  
  head=(node   *)malloc   (sizeof   (node));  
  p=head;  
  printf("单链表建立如下:");  
  while   (1)  
  {  
  scanf("%c",&x);  
  if   (x=='!')  
  break;  
  else  
  {  
  s=(node   *)malloc   (sizeof   (node));  
  s->data=x;  
  p->next=s;  
  p=s;  
  }  
  }  
  p->next=NULL;  
  return   head;  
  }  
  //======================  
  void   print_(node   *head)  
  {  
  node   *p;  
  p=head;  
  printf("打印单链表:");  
  while   (p!=NULL)  
  {  
  printf("%c",p->data);  
  p=p->next;  
  }  
  printf("\n");  
  }  
  //===========================  
  void   del(node   *head,char   x)     //  
  {  
  node   *p,*t;  
  if   (head==NULL)  
  printf("表空!");  
  if   (head->data=x)  
  {  
  p=head;  
  head=head->next;  
  free(p);  
  }  
  else  
  {  
  t=head;  
  p=head->next;  
  while   (p!=NULL   &&   p->data!=x)  
  {  
  if   (p->data!=x)  
  {  
      t=p;  
              p=p->next;  
  }  
  }  
  if   (p!=NULL)  
  {  
  t->next=p->next;  
  free(p);  
  }  
  else  
  {  
  printf("末找到删除结点!");  
  }  
  }  
  }  
  //==========================  
  void   main()  
  {  
  int   n;  
  char   x='B';  
  node   *w=NULL;  
  w=create_(w);  
  print_(w);  
  //----------------  
  del(w,x);  
  print_(w);  
  //--------------  
  printf("\n");  
  return;  
  }  
  问题点数:0、回复次数:4Top

1 楼wcq8303(pope)回复于 2004-01-04 17:24:57 得分 0

void   del(node   *head,char   x)     //  
  {  
  node   *p,*t;  
  if   (head==NULL){  
            printf("表空!");  
                              return;}      
  if   (head->data==x)   //   ==   not   =  
  {  
  p=head;  
  head=head->next;  
  free(p);  
  }  
  else  
  {  
  t=head;  
  p=head->next;  
  while   (p!=NULL   &&   p->data!=x)  
  {  
  if   (p->data!=x)  
  {  
      t=p;  
              p=p->next;  
  }  
                                              }  
  if   (p!=NULL)  
  {  
  t->next=p->next;   //你这样做,会删除很多节点的  
  free(p);  
  }  
  else  
  {  
  printf("末找到删除结点!");  
  }  
  }  
  }  
  Top

2 楼wcq8303(pope)回复于 2004-01-04 17:26:55 得分 0

long   cuo   le   ,bu   hui   shanchu   hen   duo   dianTop

3 楼com8888(com)回复于 2004-01-04 18:25:54 得分 0

t->next=p->next;  
  不是删除了P结点么?    
  如你所说,该怎改??请贴上来!Top

4 楼wcq8303(pope)回复于 2004-01-04 20:26:39 得分 0

我不是那个意思,刚才那句“你这样做,会删除很多节点的”是错写的。  
  void   del(node   *head,char   x)      
  {  
  node   *p,*t;  
  if   (head==NULL){  
            printf("表空!");  
                              return;//这里应该加上这句,不然,如果head为空时,执行下面的语还是会如错的}      
  if   (head->data==x)   //   你在这里写成了=,应该是==  
  {  
  p=head;  
  head=head->next;  
  free(p);  
  }  
  else  
  {  
  t=head;  
  p=head->next;  
  while   (p!=NULL   &&   p->data!=x)  
  {  
  if   (p->data!=x)  
  {  
      t=p;  
              p=p->next;  
  }  
                                              }  
  if   (p!=NULL)  
  {  
  t->next=p->next;    
  free(p);  
  }  
  else  
  {  
  printf("末找到删除结点!");  
  }  
  }  
  }  
  Top

相关问题

  • 添加删除数据出乱子,不知道几时在删除,几时在添加
  • 不知道该怎么说?(删除不存在的纪录)-在线
  • datagrid删除数据出错!!在线等!!!!!!!!!!!!!!!
  • DataGrid分页删除出错(在线等)
  • 不知错在哪?
  • 在删除的时候,再次决定是否要删除,免得删除错了,怎么编写啊?
  • ADO 编程删除SQL server中记录存在物理删除和标记删除吗?如果有,该如何物理删除。ACCESS里是有这个问题的,不知道SQL server如何
  • 我的WIN2000系统,不知道设置了什么地方,现在删除文件时没有确认提示了!直接就删除了!
  • 不知道谁在客户端,操作数据库删除了些东西,怎样才能知道哪台机器操作数据库删除的? 谢谢了!
  • access2000 的删除问题,我的朋友在单纯的access环境中做个小的程序不知道如何删除无用的数据

关键词

  • null
  • head
  • 单链
  • 删除
  • node
  • next
  • printf
  • del
  • free
  • else

得分解答快速导航

  • 帖主:com8888

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo