| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 289 人关注过本帖
标题:麻烦高手看一下,程序错在哪里?
只看楼主 加入收藏
daoweiniu
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-11-3
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:2 
麻烦高手看一下,程序错在哪里?
#include<stdio.h>
#include<malloc.h>
#define NULL 0
#define LEN sizeof(struct student)
struct student
{
 long num;
 float score;
 struct student *next;
};
int n;
struct student *creat(void)
{struct student *head;
 struct student *p1,*p2;
 n=0;
 p1=p2=(struct student *)malloc(LEN);
 scanf("%ld,%f",&p1->num,&p1->score);
 head=NULL;
 while(p1->num!=0)
 {n=n+1;
  if(n==1)head=p1;
  else p2->next=p1;
  p2=p1;
  p1=(struct student *)malloc(LEN);
  scanf("%ld,%f",&p1->num,&p1->score);
 }
 p2->next=NULL;
 return(head);
 }


void print(struct student *head)
{ struct student *p;
  printf("\nNow,These %d record are:\n",n);
  p=head;
  if(head!=NULL)
   do
   {printf("%ld %5.1f\n",p->num,p->score);
     p=p->next;
   } while(p!=NULL);
}   

struct student *del(struct student *head,long num)
{ struct student *p1,*p2;
  if(head==NULL) {printf("\nlist null!\n");goto end;}   
  p1=head;
  while(num!==p1->num && p1->next!==NULL)
  {  p2=p1;
     p1=p1->next;
  }     
  if(num==p1->num)
   {if(p1==head) head=p1->next;
     else p2->next=p1->next;
     printf("delete:%ld\n",num);
     n=n-1;
   }
   else printf("%ld not been found! \n",num);
   return(head);
}
 

struct student *insert(struct student *head,struct student *stud)
{struct student *p0,*p1,*p2;
  p1=head;
  p0=stud;
  if(head==NULL)
  {head=p0;p0->next=NULL;}
  else
  {while((p0->num<=p1->num)&&(p1->next!=NULL))
  {p2=p1;
   p1=p1->next;}
   if(p0->num<=p1->num)
   {if(head==p1) head=p0;
    else p2->next=p0;
    p0->next=p1;}
   else
   {p1->next=p0;p0->next=NULL;}
  
   }
     n=n+1;
     return(head);
  }
  
void main()
{ struct student *head,stu;
  long del_num;
  printf("input records:\n");
  head=creat();
  print(head);
  printf("\ninput the deleted number:");
  scanf("%ld",&del_num);
  head=del(head,del_num);
  print(head);
  printf("\ninput the insert record:");
  scanf("%ld,%f",&stu.num,&stu.score);
  head=insert(head,&stu);
  print(head);
}
   
   
  
  
  
  
  
搜索更多相关主题的帖子: include 
2011-11-03 20:29
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:20 
先将"!=="改掉吧,
再将goto end;改掉吧.

★★★★★为人民服务★★★★★
2011-11-03 20:57
daoweiniu
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-11-3
收藏
得分:0 
回复 2楼 cnfarer
ok,谢谢啦
2011-11-03 21:06
快速回复:麻烦高手看一下,程序错在哪里?
数据加载中...
 
   



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

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