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

博客作业2---线性表

时间:2018-03-24 22:38:20      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:floor   length   img   运算   总结   表头   并集   分享图片   并且   

一、PTA实验作业(5分)

题目1:7-1 最长连续递增子序列

1. 设计思路

创造顺序表并记录他的长度为maxsize
innt max[maxsize]//保留最大数的所有数
用一个数组保留最大
for(int i=0;i<L->length-1;i++){
遍历数组里面的元素当后面一个结构体的数据小于前面的更新最大数组的大小和长度
比较长度,当长越过原来的数组时就直接替换。
}
完成输出销毁

2.代码截图

技术分享图片

3.PTA提交列表说明。

技术分享图片
当n为1是没有输出最大数列后更改。

题目2:6-4 集合的基本运算

1.设计思路

//链表元素递增函数(重构链表)
保留链表的表头和第一个节点。
while(r){
//r为原先链表的第二个节点
遍历新链表当数据小于某一个数的后一个节点的数据的时候完成连接,
r=r->next
}
//r为s1链表的工作指针
//p为s2链表的工作指针

//链表并集(二路归并)
while(p&&r)
if(p->data>r->data)
申请空间保留r里面的数据
连接到链表中
r向后移动
else if(p->data<r->data)
申请空间保留p里面的数据
连接到链表中
p向后移动
else
申请空间保留r里面的数据
连接到链表中
r,p都移动
}
完成输出摧毁并集链
while(p){
将p中剩下的节点都用开辟新空间连接节点的方式放到链表去
}
while(r){
将r中剩下的节点都用开辟新空间连接节点的方式放到链表去
}

//链表交集(二路归并)
while(p&&r)
if(p->data>r->data)
r向后移动
else if(p->data<r->data)
p向后移动
else
申请新空间将节点数据保留节点的数据并且连接到链表中去
r,p都移动
}
完成输出摧毁并集链


//链表差集(二路归并)
while(p&&r)
if(p->data>r->data)
r向后移动
else if(p->data<r->data)
申请空间保留p里面的数据
连接到链表中
p向后移动
else
r,p都移动
}
完成输出摧毁并集链
while(p){
将p中剩下的节点都用开辟新空间连接节点的方式放到链表去
}

3.代码截图

技术分享图片
技术分享图片
技术分享图片
技术分享图片

4.本题调试过程碰到问题及PTA提交列表情况说明。

技术分享图片
在复制,黏贴重复步骤时没有把指针名字更改造成错误

题目3:7-4(选做) 一元多项式求导

2.设计思路

//截取了核心部分求导的函数设计思路
for(遍历整条链表)
if(节点内指数数据为0)时删除这个节点;
else 将链表的节点的zhishu-1 系数变为指数乘以系数

3.代码截图

技术分享图片

4.本题调试过程碰到问题及PTA提交列表情况说明。

技术分享图片
答案是 0 0 的时候没操作好后来修改了

二、截图本周题目集的PTA提交列表及最后排名。

PTA排名

1.顺序表PTA排名

技术分享图片

2.链表PTA排名

技术分享图片

3.我的总分:295

三、本周学习总结

1.谈谈你本周数据结构学习时间是如何安排,对自己安排满意么,若不满意,打算做什么改变?(1分)

有时间就打打代码很少看书,觉得应该增加一些书本代码的阅读来改进自己的代码风格。

2.谈谈你对线性表的认识?

线性表、包括顺序表和链表
顺序表里面元素的地址是连续的,
链表里面节点的地址不是连续的,是通过指针连起来的。
链表有利于保存数据(它的增加删除等操作会比较容易)
而顺序表比较适合作为查找数据的目录就像图书馆里面的搜索器。
二者可以相互结合来操作用会比较好一点单一使用二者之一的应用范围我认为比较局限。

3.代码Git提交记录截图。

技术分享图片

四、阅读代码

题目描述:
在一个周长为10000的圆上等距分布着n个雕塑。现在又有m个新雕塑加入(位置可以随意放),希望所有n+m个雕塑在圆周上均匀分布。这就需要移动其中一些原有的雕塑。要求n个雕塑移动的总距离尽量小。

#include<cstdio>  
#include<cmath>  
  
int main()  
{  
    int n, m;  
    while(scanf("%d%d", &n, &m) == 2)  
    {  
        double ans = 0.0, pos = 0.0;  
        for(int i = 1; i < n; i++)  
        {  
            pos = (double)i / n * (n+m);            //计算每个需要移动的雕塑的坐标(成比例缩小,目的是通过与floor作差得到移动距离~)  
            ans += fabs(pos-floor(pos+0.5)) / (n+m);//累加移动距离  
        }  
        printf("%.4lf\n", ans*10000);               //等比例扩大坐标  
    }  
    return 0;  
}  

分析题目可以知道总是有一个雕塑位置是不动的然后以这个雕塑为定点缩小题目周长的思想把题目简化,最后再放大回来,值得学习的思想。

博客作业2---线性表

标签:floor   length   img   运算   总结   表头   并集   分享图片   并且   

原文地址:https://www.cnblogs.com/m208231833/p/8634793.html

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