码迷,mamicode.com
首页 > 其他好文 > 详细

结构体和链表

时间:2018-01-20 00:22:54      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:增加   src   数字   bsp   没有   开始   数值   排序   tchar   

一、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的使用很关键。而谢晔晖同学判断性别的数字来选择跳过已经选择的同学。他的这种方法代码更加简单,我的代码比较繁琐,但是我比较喜欢我的代码,因为我的代码思路更加的清晰。

本周总结

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

不足

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

 

结构体和链表

标签:增加   src   数字   bsp   没有   开始   数值   排序   tchar   

原文地址:https://www.cnblogs.com/yuyao666666/p/8319190.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!