为什么我这个链表没法输入数据呢???百思不得其解
题目要求是这样的,就是在学生的基本信息里查找和输入的年龄相同的,而我咋建立链表时在输入第一个学生的信息时当输入性别时就提示内存不能为written呢?一下是我的代码:请大家看一下,给指下错误,有源代码的提供源代码的也行,不过我最大的希望就是您能指出我到底错哪了?这才是我想要的,诚待您的帮助,谢谢!
一下是我的代码:
#include<stdio.h>
#include<stdlib.h>
struct stud
{
int num;
char name[20];
char sex[5];
int age;
struct stud *next;
}stu[4];
void main()
{
struct stud *head ,*thisp,*newp,*p,*q;
head=NULL;/*置空表*/
int i, aged;
printf("输入四个学生的信息:\n");/*建立链表*/
for(i=0;i<4;i++)
{
newp=(struct stud *)malloc(sizeof(stu));
if(head==NULL)
head=newp;
else
{
thisp=head;
while(thisp->next!=NULL)
thisp=thisp->next;
thisp->next=newp;/*指向新开辟的节点*/
}
thisp=newp;
printf("学号为i+1的学生的信息%d\n",i+1);
printf("学号:\n");
scanf("%d",&thisp->num);
printf("姓名:\n");
scanf("%s",thisp->name[20]);
printf("性别:\n");
scanf("%s",thisp->sex[5]);
printf("年龄:\n");
scanf("%d",&thisp->age);
thisp->next=NULL;
}
printf("请输入一个要删掉的年龄:\n");
scanf("%d",&aged);
p=head;
while(1)
{
if(head->next==NULL)
{
printf("没找到");
break;
}
if(aged=head->age)/*删除头结点*/
{
head=head->next;
free(head);
break;
}
q=p;/*q指向删除节点的前一节点*/
p=p->next;/*指向下一个节点*/
if(p->age==aged)
{
q->next=p->next;
free(p);
break;
}
}
while(p!=NULL)
{
printf("%4s%5s",p->name,p->sex);
printf("%3d%4d",p->num,p->age);
p=p->next;
}
}