这个链表哪里有问题

来源:百度知道 编辑:UC知道 时间:2024/05/18 18:31:59
#include<stdio.h>
#include<malloc.h>
typedef struct student
{ int num;
int score;
struct student *next;
}LinkList;
LinkList *InitList(LinkList *l)
{ l=(LinkList *)malloc(sizeof(LinkList));
l->next=NULL;
return(l);
}
LinkList *Creat(LinkList *l,int n)
{ LinkList *p;
int i;
printf("****开始创建链表****");
for(i=n;i>0;i--)
{ p=(LinkList *)malloc(sizeof(LinkList));
printf("\n\n请输入第%d个学生的数据",i);
printf("num:");
scanf("%d",&p->num);
printf("score:");
scanf("%d",&p->score);
p->next=l->next;
l->next=p;
}
return(l);
}
void GetElem(LinkList *l,int i)
{ LinkList *p;
int j=1;
p=l->next;
j=1;
while(p!=NULL&&j<i)
{ p=p->next;
++j;
}
if(p==NULL)printf("第%d个元素不存在&q

void DeleteLink(LinkList *l,int i)
{ LinkList *p,*q;
int j;
p=l;
j=0;
while(p->next&&j<i-1)
{ p=p->next;
++j;
}
if(!(p->next)||j>i-1)
printf("删除位置不合理\n");
else //掉了,如果条件不成立的话删除节点。释放P
{q=p->next;
p->next=q->next;
free(p);
printf("删除完成\n\n");
}}