| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 280 人关注过本帖
标题:请教,编译通过,运行不了的问题!
只看楼主 加入收藏
风之翼ASD
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2011-1-9
结帖率:100%
收藏
 问题点数:0 回复次数:0 
请教,编译通过,运行不了的问题!
//用学生的学号,分数的结构体,进行对链表的操作


#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);
};

//输出链表函数print
void print(struct student * head)
{
  struct student * p;
  printf("\nNow,These %d records are:\n",n);
  p=head;
  if(head!=NULL)
     do
      {
        printf("%ld,%f\n",p->num,p->score);
        p=p->next;
      }
    while(p!=NULL);
};


//删除结点函数del
struct student *del(struct student * head,long num)
{
  struct student *p1,*p2;
  if(head==NULL)
     {
      printf("\nlist null!\n");
      return head;
    }      
   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);
};

//插入结点函数insert
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);
  while(del_num!=0);
     {
       head=del(head,del_num);
       print(head);
       printf("\ninput the deleted number:");
       scanf("%ld",&del_num);
    }   
  printf("\ninput the insert records:");
  stu=(struct student *)malloc(LEN);
  scanf("%ld,%f",&stu->num,&stu->score);
  while(stu->num!=0)
     {
       head=insert(head,stu);
       print(head);
       printf("input the record:");
       stu=(struct student *)malloc(LEN);
        scanf("%ld,%f",&stu->num,&stu->score);
    }
}
2011-08-02 02:07
快速回复:请教,编译通过,运行不了的问题!
数据加载中...
 
   



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

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