大家帮看看这个程序,关于链表的
这个程序主要实现1.链表的建立,链表的输入数据,插入(按学号升序),删除,但是在我下面有标准的地方出现了问题,提示是
[Error] C:\Users\lenovo\Desktop\p199-5链表的建立.c:36: incompatible types in assignment。
我想了好久了,没办法了问下大家,新手。
#include<stdio.h>#include<stdlib.h>struct student{ int num; float average; struct student *next;};main(){ int i; int x; float y; struct student *head=NULL,*p=NULL; struct student *create(); // 链表的建立函数 struct student insert(struct student *p); //链表的插入函数 struct student cancel(struct student *p); //链表的删除函数 head=create(); //链表的创建 p=head; //由于下面的输入用到了head,所以用p保存开始的 for(i=0;i<8;i++) //数据的输入 {printf("请输入学号:\n"); scanf("%d",&head->num); printf("请输入平均成绩:\n"); scanf("%f",&head->average); head=head->next; }; p=insert(p); //插入一个学生数据 ?????出现问题 for(i=0;i<9;i++) //用来检测一下插入的数据行不行 {printf("%d,%f\n",p->num,p->average); p=p->next; }; p=cancel(head); //出现问题????????????? for(i=0;i<8;i++) //用于检测一下删除的数据行不行 {printf("%d,%f\n",p->num,p->average); p=p->next; }}//链表的建立 struct student *create(){ int i=0; struct student *head=NULL,*tail=NULL,*p=NULL; for(i=0;i<8;i++) {p=(struct student *)malloc(sizeof(struct student)); p->next=NULL; if(i==0) head=tail=p; else {tail->next=p; tail=p; }; if(i==7) p->next=NULL; }; return head; //出现问题?????????}//插入一个学生数据 struct student insert(struct student *p){ int x; int flag=0; struct student *q=NULL,*temp=NULL,*head=NULL; q=(struct student *)malloc(sizeof(struct student)); q->next=NULL; printf("请输入这个加入学生的学号:\n"); scanf("%d",&q->num); printf("请输入加入学生的平均成绩:\n"); scanf("%f",&q->average); if(p->num>q->num) {head=q;head->next=p;} //判断是不是为第一个 else {head=p; while(flag==0) {if(q->num>p->num) {temp=p->next; p->next=q; q->next=temp; flag=1; } else p=p->next; }; }; printf("加入学生成功!\n"); return head;} //删除结点 struct student cancel(struct student *p){ int x; int flag=0; struct student *temp=NULL,*head=NULL; printf("请输入需要删除的学生的学号:\n"); scanf("%d",&x); if(p->num==x) {head=p->next;free(p);} //判断删除的是不是第一个 else {head=p; while(flag==0) {temp=p; if(p->next->num==x) flag=1; else p=p->next; }; }; printf("删除成功!\n"); return head; //出现问题????????????}