struct student* p1, * p2, * head; //定义结构体变量
head=p1 = p2 = (struct student*)malloc(sizeof(struct student)); //开辟存储空间
scanf_s("%ld%s%c%d", &p1->num, p1->name, &p1->sex, &p1->age); //输入相关数据
while (p1->num != 0) // 如果输入的学号num为0则停止输入,表明输入结束
{
i = i + 1;
if (i == 1)
head = p1;
else
p2->next = p1;
p2 = p1;
p1 = (struct student*)malloc(sizeof(struct student)); //强制类型转换(struct student*)
scanf_s("%ld%s%c%d", &p1->num, p1->name, &p1->sex, &p1->age);
} /*23至35行有问题,程序无法执行下去*/
p2->next = NULL;
free(p1); //释放多余的存储空间
struct student* p3, * p4;
if (head != NULL)
{
p3 = head;
for (int j = 1; j <= i; j++)
{
printf("%ld,%s,%c,%d\n", p3->num, p3->name, p3->sex, p3->age);
p3 = p3->next;
} //打印选择之前的链表
}
else
printf("The linklist is not exist\n");
int age;
scanf_s("%d", &age); //输入要删除的元素
seek(age,head); //对输入的元素进行选择
if (head != NULL)
{
p4 = head;
while (p4 != NULL)
{
printf("%ld,%s,%c,%d\n", p4->num, p4->name, p4->sex, p4->age);
p4 = p4->next;
}
} //打印选择过后的链表
if (pt != NULL)
{
if (pt->age == age)
{
temp = pt;
pt = pt->next;
free(temp);
return;
} //先判断头结点
else
{
for (n = 2; n <= i; i++)
{
if (pt->next->age != age)
pt = pt->next;
else
{
temp = pt->next;
pt->next = pt->next->next;
free(temp);
return;
}
}
}
}
else
printf("error\n");
} //定义选择函数seek