| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 317 人关注过本帖
标题:纠结了我一天的问题 删除单链表结点的函数
取消只看楼主 加入收藏
boogaloo1c
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-6-30
收藏
 问题点数:0 回复次数:0 
纠结了我一天的问题 删除单链表结点的函数
/*删除函数*/
struct message *del(struct message *head)
{
    struct message *p1,*p2;
    int m;
    char name[30];
    if(head==NULL)
 {
     printf("通讯录为空,删除失败!\n");
     return(head);
 }
p1=head;
printf("∞∞∞∞∞∞∞∞∞∞∞∞∞∞\n");
printf("§  请输入需要删除的姓名  §\n");
printf("∞∞∞∞∞∞∞∞∞∞∞∞∞∞\n");
m=0;
gets(name);
     while(p1!=NULL)
     {
      while(strcmp(p1->name,name)!=0&&p1->next!=NULL)
      {
       p2=p1;
       p1=p1->next;
      }
      if(strcmp(p1->name,name)==0)
      {
       m++;
       if(p1=head)
       {
           free(p1);
          head=p1->next;
       }
       else
       {
           p2=head;
           while(p2->next!=p1)
               p2=p2->next;
           if(p1->next=NULL)
           {
               free(p1);
               p2->next=NULL;
           }
           else
           {
               free(p1);
               p2->next=p1->next;
           }
       }
       n=n-1;
          printf("删除成功!\n");
      }
      p1=p1->next;
   
     if(m==0)
     {
      printf("查无此人,删除失败!\n");
     }
     break;
     
  }
return(head);
}
/*输出函数*/
void show(struct message *head)   
{
struct message *p;
if(head!=NULL)
{
     p=head;
     printf("本通讯录现在共有%d人:\n",n);
     printf("---姓名-------- msn---------手机--------Email--------通讯地址\n");
     printf("==================================\n");
     do
     {
      printf("== %s",p->name); printf("        ");
      printf("%s",p->msn); printf("        ");
      printf("%s",p->tel); printf("        ");
      printf("%s",p->email); printf("        ");
      printf("%s",p->address); printf("        \n");
      p=p->next;
     }while(p!=NULL);
     printf("==================================\n");
}
else
     printf("通讯录为空,无法输出!\n");
}
我在最后switch的一个case中这样调用它们
 case '3':
          {
       head=del(head);                          /*删除*/
       show(head);
          }
      break;
程序运行到这里没有反应 求解 应该怎么改 或者再帮我写一个删除结点的函数吧 明天就要交作业了 急死了
搜索更多相关主题的帖子: message 通讯录 return 姓名 
2011-06-30 19:10
快速回复:纠结了我一天的问题 删除单链表结点的函数
数据加载中...
 
   



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

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