结构体和链表
Posted 曾_钰尧
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结构体和链表相关的知识,希望对你有一定的参考价值。
一、PTA实验题目
1、7-2 通讯录排序
PTA提交列表
2设计思路
这题说按年龄大小输出,所以只要用排序把他们的生日排序,再把对应的姓名,电话号码打出来就可以了。
代码
#include<stdio.h>
struct stu{
char name[30];
int num;
char ph[30];
}stu[30],t;
int main()
{
int n,i,min=0,j;
scanf("%d",&n);;
for(i=0;i<n;i++)
{
scanf("%s %d %s",stu[i].name,&stu[i].num,stu[i].ph);
}
for(i=0;i<n;i++)
{
min=i;
for(j=i+1;j<n;j++)
{
if(stu[min].num>stu[j].num)
{
t=stu[min];
stu[min]=stu[j];
stu[j]=t;
}
}
printf("%s %d %s\\n",stu[min].name,stu[min].num,stu[min].ph);
}
}
3、错误分析
这里我一开始不懂那个怎么把结构体里的数据都给复制,导致了错误,其实只要再定义一个结构体,让他们交换,就可以把数值全部交换了。
2、
7-1 查找书籍
PTA提交列表
设计思路
这题只要用循环把最贵和最便宜的输出来就可以,使用结构体可以很好的解决问题。
代码
#include<stdio.h>
struct zyy{
double count;
char name[40];
};
int main()
{
struct zyy a[10];
int n,i,max=0,min=0;
scanf("%d",&n);
getchar();
for(i=0;i<n;i++){
gets(a[i].name);
scanf("%lf",&a[i].count);
getchar();
}
for(i=0;i<n;i++){
if(a[max].count<a[i].count){
max=i;
}
}
for(i=0;i<n;i++){
if(a[min].count>a[i].count){
min=i;
}
}
printf("%.2lf, %s\\n",a[max].count,a[max].name);
printf("%.2lf, %s\\n",a[min].count,a[min].name);
}
3、这题我一开始一直错误,在DEV上输出不进去,是因为没有解决好空格的问题,使用getchar可以解决空格的问题。GET到了。就是第13行和第14行的空格问题。
3、7-12 单向链表4
PTA提交列表
设计思路
我们初步设计链表,这题还是很有意义的,考验了我们的头插法和尾插法。这里用链表可以解决逆向输出的问题。
3、错误分析
这题相对简单主要是链表的掌握。
同学PTA互评
名字:谢晔晖
代码图
优劣
我是先判断性别,再来判断被另一个性别的同学补习,这里注意是k和j的使用很关键。而谢晔晖同学判断性别的数字来选择跳过已经选择的同学。他的这种方法代码更加简单,我的代码比较繁琐,但是我比较喜欢我的代码,因为我的代码思路更加的清晰。
PTA排名
本周总结
我们学习了结构体和链表,结构体可以解决很多问题,比如说很多个数据存在一个结构体里,很方便。然后就是链表的使用,链表我觉得就是增强版的数组,如果理解了,很多问题都会变得很方便。
不足
我觉得对于链表的删减和增加的使用,我还不太熟悉。
以上是关于结构体和链表的主要内容,如果未能解决你的问题,请参考以下文章