结构体和链表

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排名

本周总结

我们学习了结构体和链表,结构体可以解决很多问题,比如说很多个数据存在一个结构体里,很方便。然后就是链表的使用,链表我觉得就是增强版的数组,如果理解了,很多问题都会变得很方便。

不足

我觉得对于链表的删减和增加的使用,我还不太熟悉。

 

以上是关于结构体和链表的主要内容,如果未能解决你的问题,请参考以下文章

结构体和链表

结构体和链表

结构体和链表

结构体和链表

结构体和链表

结构体和链表