谁能帮我把动态链表改好,包括前面几个问题都采纳他


#include "stdio.h"

#include<malloc.h>

#include<string.h>

#include<ctype.h>

#define LEN sizeof(struct student)


struct student{

long num;

float score;

struct student*next;

};

struct student*creat()

{

struct student *head;

    struct student*p1,*p2;

char ch;

int a=0;

head=NULL;

    

    

    printf("是否输入新数据?(y/n):");

   

     while(toupper(ch=getchar())=='Y')

    {

      p1=(struct student * )malloc(LEN);

      a++;

      printf("\n请输入:");

      scanf("%ld,%f",&p1->num,&p1->score);

      printf("是否输入新数据?(y/n):");

      scanf("%ld,%f",&p1->num,&p1->score);

      getchar();

      printf("是否输入新数据:?(y/n):");

      

      if(a==1)

      {

       head=p1;

       p2=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(LEN);

    printf("\n输入所要插入节点的数据:");

    scanf("%ld,%f",&p0->num,&p0->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==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;

}

}


struct student *del(struct student *head)

{

struct student *p1,*p2;

long num;

printf("\n请输入所要删除的学号:");

scanf("%ld",&num);

if(head==NULL)

{

printf("\n链表为空!\n");

return(head);

}

if(head->num==num)

{

printf("删除学号:%ld,成绩%4.1f",head->num,head->score);

return(head);

}

else

{

 p2=head;

 p1=head->next;

 while(p1!=NULL)

 {

  if(p1->num==num)

  {

   p2->next=p1->next;

   break;

   }

   else

   {

    p2=p1;

    p1=p1->next;

    }

   }

   return(head);

   }

  }

    

void main( )

{

struct student *stu;//用于指向结构体变量

stu=creat();

stu=insert(stu);

print(stu);

stu=del(stu);

print(stu);

}


溯源1
浏览 1291回答 3
3回答

OSong

c语言,抱歉了

ziom

看来是没人能帮你改好了采纳我把,还能得个积分
打开App,查看更多内容
随时随地看视频慕课网APP