为了账号安全,请及时绑定邮箱和手机立即绑定

动态链表错哪了?

动态链表错哪了?

溯源1 2017-02-01 12:43:12
#include "stdio.h"#include<malloc.h>#include<string.h>#include<ctype.h>#define LEN struct studentstruct student{ long num; float score; struct student*next;};struct student*create(){ char ch;    struct student *head;    struct student*p1,*p2;    int a=0;    printf("是否输入新数据:\n");        while(toupper(ch=getchar())=='Y')    {      p1=(LEN*)malloc(sizeof(LEN));      printf("num:");      scanf("%ld",&(*p1).num);      printf("score:");      scanf("%d",&(*p1).score);      getchar();//getchar吸收回车      printf("是否输入新数据:\n");      a++;      if(a==1)       head=p1;      else        (*p2).next=p1;      p2=p1;      p1->next=NULL;      }    return(head);}struct student * insert(struct student * head){    struct student *p0,*p1,*p2;    p0=(struct student * )malloc(sizeof(LEN));    printf("\n输入所要插入节点的数据:");    scanf("%ld,%f",&p1->num,&p1->score);    p1=head;    if(head==NULL)    {      head=p0;      p0->next=NULL;    }    else    if(p1->num>p0->num)    {    p0->next=head;    head=p0;    }    else    {    while(p1!=NULL)    {    if(p1->num<p0->num)    {    p2=p1;    p1=p1->next;    }    else    {    p0->next=p1;    p2->next=p0;    break;    }    }    if(p1->next==NULL)    {    p0->next=NULL;    p2->next=p0;    }        }    return(head);   }void print(struct student *head){ struct student *p; p=head; while(p!=NULL) { printf("\n学生学号:%d,成绩:%4.1f",p->num,p->score);//只是一个名 p=p->next;//测试随便输 }}void main( ){ struct student *stu; stu=create(); stu=insert(stu); print(stu);}
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 1348 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信