小弟我这个链表有点有关问题,找了半天没找着
我这个链表有点问题,找了半天没找着
------解决方案--------------------
struct stu *head,*pf,*pd;
定义的是pd,用的却是pb
------解决方案--------------------
错太多了,显然你是复制别人的东东往上凑的~~~
------解决方案--------------------
没有指向next结构的指针
- C/C++ code
#include"stdio.h" #include"malloc.h" #include"string.h" #define NULL 0 struct stu{ char *name; char sex; int age; int num; }; struct stu *creat(int n) { struct stu *head,*pf,*pd; for(int i=0;i<n;i++) { pd=(struct stu*)malloc(sizeof(struct stu)); printf("input Number and Age\n"); scanf("%d%d",&pb->num,&pb->age); if(i==0) head=pf=pd; else { pf->next=pb; pb->next=NULL; pf=pb; } } return head; } struct stu *search(struct stu *head,int num) { struct stu *pf,*pb; pb=head; while(pb->num!=num&&pb->next!=NULL) { pb=pb->next; } if(pb->num=num) ruturn pb; if(pb->num!=num&&pb->next==NULL) printf("没有该同学"); } struct stu *delete(struct stu *head,int num) { struct stu *pf,*pb; if(head==NULL) { printf("这表是个空链表"); goto end; } pb=head; while(pb->num!=num&&pb->next!=NULL) { pf=pb;pb=pb->next; } if(pb->num=num) { if(pb==head) head=pb->next; else pf->next=pb->next; printf("节点已经删除"); free(pb); } else printf("没有这个节点"); end; } struct stu *insert(struct stu *head,*pi) { struct stu *pf,*pb; if(head==NULL) { head=pi; pi-next=NULL; } else { pb=head; while(pi->num>pb->num&&pb->next!=NULL) { pf=pb; pb=pf-next; } if(pi->num<=pb->num) { if(head==pb) { head=pi; } else { pf->next=pi; pi-next=pb; } else { pb->next=pi; pi->next=NULL; } } } return head; } int main() { struct *head,*pi; int num; printf("请输入创建几个同学成绩单"); scanf("%d",&num); head=creat(num); print(head); printf("请输入查找同学的学号"); scanf("%d",&num); print(search(head,num)); printf("请输入要被删除同学的学号"); scanf("%d",&num); print(delete(head,num)); printf("请输入要插入同学的学生号和年龄: "); pi=(struct stu *)malloc(sizeof(struct stu)); scanf("%d%d",&pi->num,&pi->age); print(insert(head,pi)); }
------解决方案--------------------
struct stu *head,*pf,*pd;
定义的是pd,用的却是pb
------解决方案--------------------
错太多了,显然你是复制别人的东东往上凑的~~~
------解决方案--------------------
没有指向next结构的指针