69,370
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<stdlib.h>
struct student
{
int number;
char name[30];
char sex;
int age;
struct student *next;
};
int main()
{
struct student head,*p1=&head,*p2;
int n,c_age;
scanf("%d",&n);//输入链表的长度n
head.next=NULL;
while(n-->0)
{
p1->next=(struct student*)malloc(sizeof(struct student));
p1=p1->next;
p1->next=NULL;
scanf("%d %s %c %d",&p1->number,p1->name,&p1->sex,&p1->age);//学号、姓名、性别、年龄
}
printf("\n\n请输入要删除的年龄:");
scanf("%d",&c_age);// 输入要删除的年龄
printf("\n\n删除后的显示结果:\n");
p1=head.next;
while(p1!=NULL) //寻找是否有与输入的年龄c_age相同的年龄,如果有,删除掉
{
if(c_age!=p1->age)
{
printf("%5d %10s %5c %6d\n",p1->number,p1->name,p1->sex,p1->age);//输出删除数据后的链表数据
}
p2=p1->next;
free(p1);
p1=p2;
}
return 0;
}
4
101 Ma m 20
102 Li f 19
103 Zhang m 27
104 Wang f 19
请输入要删除的年龄:19
删除后的显示结果:
101 Ma m 20
103 Zhang m 27
请按任意键继续. . .