| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 439 人关注过本帖
标题:链表问题,帮忙看下!谢谢
只看楼主 加入收藏
zgzhly
Rank: 1
等 级:新手上路
帖 子:68
专家分:7
注 册:2008-10-17
结帖率:100%
收藏
 问题点数:0 回复次数:4 
链表问题,帮忙看下!谢谢
程序目的是当输入一个age,当与链表中结点的年龋相同是,将这个结点删点,但是我这个程序如果链表中有2个相同年龋的结点的话,只有删掉一个,不知道哪出问题了!!帮忙看下啊谢谢了!
#define NULL 0
#define LEN sizeof(struct student)
struct student
{char num[6];
 char name[10];
 char sex[2];
 int age;
 struct student *next;
}stu[10];
main()
{int i,flag=1,length,age1;
 struct student *p,*head,*p1;
 while(flag==1)
  {printf("Input length of list(<10):");
   scanf("%d",&length);
   if(length<10)
   flag=0;
  }
  p1=(struct student *) malloc(LEN);
  head=p1;
  for(i=0;i<length;i++)
  {p=p1;
   printf("NO.:");
   scanf("%s",p->num);
   printf("name:");
   scanf("%s",p->name);
   printf("sex:");
   scanf("%s",p->sex);
   printf("age:");
   scanf("%d",&p->age);
   p1=(struct student *) malloc(LEN);
   p->next=p1;
  }
  p->next=NULL;
  p=p1=head;
  printf("Input age:");
  scanf("%d",&age1);
  while(p!=NULL)           
  {if(age1==p->age)           
   {if(p==head)               
    head=p->next;              
    else if(p->next==NULL)   
    p1->next=NULL;              这里出问题了但不知道出在哪??
    else p1->next=p->next;     
   }                          
    p1=p;                     
    p=p->next;               
  }
  printf("NO.    name   sex   age\n");
  p=head;
  while(p!=NULL)
  {printf("%-3s%8s%6s%6d\n",p->num,p->name,p->sex,p->age);
   p=p->next;
  }
}
搜索更多相关主题的帖子: 快来帮帮我 
2008-12-12 19:42
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
NULL 不用重新定义,你把宏定义删除之后再试一下。
2008-12-12 20:05
zgzhly
Rank: 1
等 级:新手上路
帖 子:68
专家分:7
注 册:2008-10-17
收藏
得分:0 
版本,那个NULL定义不能去啊,我试了的,去掉后提示Undefined symbol NULL啊..能不能再帮忙看下啊谢谢了!!
2008-12-12 23:26
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
while(p!=NULL)           
{
  if(age1==p->age)           
   {if(p==head)               
    head=p1=p->next;         
    else p1->next=p->next;     //---后两种情况可以合并                           
    free(p);         //---- p1=p; p=p->next;           让p1等于被删结点,有问题。
    p=p1->next;
   }
  else{    p1=p;p=p->next;}      //--- age1!=p->age的情况
}
2008-12-12 23:34
zgzhly
Rank: 1
等 级:新手上路
帖 子:68
专家分:7
注 册:2008-10-17
收藏
得分:0 
弄好了,谢谢了!!
2008-12-13 23:33
快速回复:链表问题,帮忙看下!谢谢
数据加载中...
 
   



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

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