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

第02次作业-线性表

时间:2018-03-24 21:29:48      阅读:396      评论:0      收藏:0      [点我收藏+]

标签:声明   pos   元素   code   结果   bubuko   思路   src   blog   

一、PTA实验作业

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

给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列。例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8)。

1、设计思路

/*求最长递增子序列*/
定义变量 position 、len 记录子列的开始位置和长度
定义变量 maxposi 、maxlen 记录最长递增子列的位置和长度
while ( i < L->length)
    if  不为递增
        重新记录子列初始位置和长度
    else
        len++
     if  当前长度大于最大长度
        将当前 position、len 赋给 maxposi、maxlen
for  0  to  maxlen
    将最长递增子列赋给顺序表 L
 L 的长度为  maxlen

2、实验代码

  • 主函数
    技术分享图片
  • 求最长递增子列
    技术分享图片

3、 遇到问题及解决方法

  • 编译错误:用 c 的编译器运行 c++ 文件
    解决方法:将上传选项改为 c++
  • 答案错误:随机最大 n 的测试点过不去
    解决方法:将#define MAXSIZE 100000 改为 #define MAXSIZE 100001 防止数据溢出
    技术分享图片

题目二:7-3 两个有序序列的中位数

已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。

1、设计思路

  • 1)合并链表
  • 2)输出合并链表的第 n 个数 ( n 为单个链表的表长 )
/* 链表的合并 */
定义指针变量 p1 指向 L1
定义指针变量 p2 指向 L2
while p1 不空且 p2 不空
    比较两者指向的 data 域
    较小的赋给 L ,指针后移
将剩余的 L1 或 L2 赋给 L

2、实验代码

  • 主函数
    技术分享图片
  • 链表合并
    技术分享图片
  • 求中位数
    技术分享图片

3、 遇到问题及解决方法

  • 运行超时:多写了对单个子列的排序函数
    解决方法:子列本为非降序,无需排序
  • 编译错误:函数的声明放在了结构体之前,导致 List 未定义
    解决方法:将函数声明置于结构体定义之后
    技术分享图片

题目三:7-2 一元多项式的乘法与加法运算

设计函数分别求两个一元多项式的乘积与和。

1、设计思路

/*多项式加法*/
定义结构体指针 ha hb 分别指向 链表 a b
定义结构体指针 c 用于存储新链表
定义整型变量 temp 用于判断系数是否为零
while a不空 且 b不空
    if ha hb 所指元素的指数不同
        按顺序存入新链表 
    else 
        合并同类项
if a不为空 或 b 不为空
    将剩余结点放入 c 
返回 c
/*多项式乘法*/
定义结构体指针 ha hb 分别指向 链表 a b
定义结构体指针 c 用于存储新链表
定义 tmpC 暂存 乘法运算结果  
if a空 或 b空
    返回空的 c 
while  ha不为空
    遍历乘以 b 中元素
调用加法函数,进行合并同类项,并将结果赋于 c
返回 c

2、实验代码

  • 主函数
    技术分享图片
  • 多项式加法
    技术分享图片
    技术分享图片
  • 多项式乘法
    技术分享图片

3、 遇到问题及解决方法

  • 答案错误:没有考虑同类项合并问题
    解决方法:增加了指数相同,系数相加的代码行
  • 段错误:在 if ( p ->coeff > p->next->coeff )时没有判断 p->next 是否存在
    解决方法:将循环条件 while ( p ) 改为 while ( p->next )
  • 答案错误:系数为零时不输出
    解决方法:判断系数非零时才加入新链表中
    技术分享图片

二、截图本周题目集的PTA最后排名

- 1.顺序表PTA排名

技术分享图片

- 2.链表PTA排名

技术分享图片

- 3.我的总分:2.5

2.5分(必做题全部做完,选做题做部分 )

本周学习总结

1、数据结构的学习时间和自我感觉

  • 本周数据结构学习时间:对于数据结构的学习时间基本都花在打 PTA 上 ,PTA 的内容有很多不懂,花了很多时间。
  • 对自己的安排不满意,觉得这样效率不高,但是 PTA 又要完成,有点赶鸭子上架的感觉。
  • 对于不懂的问题,一般问同学或者是百度。
  • 应该做出的改变:先巩固基本知识,再来做实际编程。

    2、对线性表的认识

  • 顺序表 & 优点: 对数据的访问方便,无需未表示表中元素逻辑关系而占用内存
    缺点:插入和删除元素需要大量移动元素,容易造成空间碎片
  • 链表 & 优点:在插入、删除元素时只需要对单个结点进行操作,不需移动元素
    缺点:在访问数据时需要遍历,数据密度较小

3.代码Git提交记录截图

技术分享图片

第02次作业-线性表

标签:声明   pos   元素   code   结果   bubuko   思路   src   blog   

原文地址:https://www.cnblogs.com/Lclkris/p/8630162.html

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