求大佬看看我的链表(头插法)哪出错了
题目:建立单向链表。每个结点包括学号、姓名、性别、年龄和 C 语言 课程成绩。实现按学号删除指定结点功能。
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int number;
wchar_t name[5];
wchar_t sex;
int age;
int grade;
struct node* next;
}Node;
typedef Node* linklist;
void creatlinklist(linklist* L, int n)
{
linklist p;
int i;
*L = (linklist)malloc(sizeof(Node));
(*L)->next = NULL;
for (i = 0; i < n; i++)
{
p = (linklist)malloc(sizeof(Node));
printf("输入第%d个学生的信息\n", i+1);
scanf("%d %s %s %d %d", &(p->number), &(p->name), &(p->sex), &(p->age), &(p->grade));
p->next=(*L)->next;
(*L)->next = p;
}
}
int listdelete(linklist* L, int i)//删除链表l中的第i个元素
{
int j;
linklist p, q;
p = *L;
j = 1;
while (p->next && j < i)//找到第i个元素
{
p = p->next;
++j;
}
if (!(p->next) || j > i)
return 0;//未找到i节点报错
q = p->next;
p->next = q->next;
free(q);
return 1;
}
int main()
{
int m, n,i;
linklist p;
linklist l;
printf("学生数目\n");
scanf("%d", m);
creatlinklist(&l, m);
printf("删除第几个学生信息\n");
scanf("%d", n);
listdelete(&l, n);
return 0;
}