谭浩强第四版第九章课后习题12>>>建立一个链表,每个节点包括:学号、姓名、性别、年龄。输入一个年龄,若链表 中的结点所包含的年龄等于此年龄,则删除此结点。
2024-08-25 20:44:04
#include<stdio.h>
#include<stdlib.h>
#define N sizeof(link)
typedef struct lin
{
struct lin *next;
int num;
char name[];
char sex;
int age;
}link;
void print(link *head)
{
link *p;
p=head;
printf("打印数据如下:\n");
while(p)
{
printf("%d\t%s\t%c\t%d\n",p->num,p->name,p->sex,p->age);
p=p->next;
}
}
int n;
link *creat(void)
{
link *head,*p,*s;
p=s=(link *)malloc(N);
printf("请输入输数据:\n");
scanf("%d %s %c %d",&p->num,p->name,&p->sex,&p->age);
head=p;
n=;
while(p->num!=)
{
n++;
if(n!=)s->next=p;
s=p;
p=(link*)malloc(N);
printf("请输入数据1:\n");
scanf("%d %s %c %d",&p->num,p->name,&p->sex,&p->age);
}
s->next=NULL;
return(head);
}
link *del(link *head,int a)
{
link *p,*p1,*s;
for(p=p1=head;p;)
{
if(p->age==a)
if(p==head)
{
s=p;
head=p=p->next;
free(s);
}
else
{
p1->next=p->next;
s=p;
p=p->next;
free(s); }
else
{
p1=p;
p=p->next;
}
}
return(head);
}
int main()
{
link *head,*p;
int a;
head=creat();
printf("打印处理前的数据:\n");
print(head);
printf("请输入年龄:\n");
scanf("%d",&a);
p=del(head,a);
printf("打印处理后的数据: \n");
print(p);
return ;
}
测试结果:
请输入输数据:
Li F
请输入数据1:
Wang M
请输入数据1:
Sun F
请输入数据1:
CH M
请输入数据1:
QIn F
请输入数据1:
Kun F
请输入数据1:
Jun M
请输入数据1:
Xun F
请输入数据1:
Liu M
请输入数据1: 打印处理前的数据:
打印数据如下:
Li F
Wang M
Sun F
CH M
QIn F
Kun F
Jun M
Xun F
Liu M
请输入年龄: 打印处理后的数据:
打印数据如下:
Wang M
Sun F
QIn F
Kun F
Xun F
Press any key to continue
最新文章
- Caffe 源碼閱讀(四) Layer.hpp Layer.cpp
- unity, 只发射一个粒子的粒子系统
- sklearn学习笔记1
- App 打包并跳过 AppStore 的发布下载
- CentOS 7 安装Redis 2.8.7
- css选择器,有箭头与没箭头的区别
- LVS配置与安装
- eclipse tomcat 网页404的一个小问题
- 使用gettimeofday测试函数运行的时间
- poj 1198 hdu 1401 搜索+剪枝 Solitaire
- Java面向对象编程基础
- HighCharts之2D柱状图、折线图的组合多轴图
- 生成和配置https证书
- 微信小程序基础之试图控件View、ScrollView、Swiper
- Java 进制间的转换
- 字符串匹配的 Boyer-Moore 算法
- 《CSS世界》读书笔记(九)
- manjaro 配置 独立显卡驱动
- 【maven】Maven中的dependencyManagement
- PAT乙级1032