⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 11-8到11b.cpp

📁 C程序设计(第3版)程序源代码,提供你最丰富的实际代码
💻 CPP
字号:
#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()
  {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 records 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);
end:
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);
	 }

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 ("input the deleted number:");
	scanf("%ld",&del_num);}
     printf("\ninput the inserted record:");
     stu=(struct student *) malloc(LEN);
     scanf("%ld,%f",&stu->num,&stu->score);
     while(stu->num!=0)
	{head=insert(head,stu);
	  printf("input the inserted record:");
	  stu=(struct student *)malloc(LEN);
	  scanf("%ld,%f",&stu->num,&stu->score);
	 }

     }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -