博客作业2---线性表

本文详细解析了PTA实验中的三个题目,包括最长连续递增子序列、集合的基本运算及两个有序序列的中位数问题。通过伪代码展示了算法的设计思路,并分享了编程过程中的心得与体会。

一、PTA实验作业(5分)

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

  1. 设计思路(伪代码或流程图)
定义 a[],b[],a放元素,b放递增序列长度 
将元素放入数组a中;
for(i=0,j=0;i<n-1;i++)
    {//找连续递增序列 
        if(a[i]<a[i+1])
        b[j]++;//将递增序列长度放入b数组中 
        else
        j=i+1;//一旦不连续,j=i+1,j记录该序列的开头下标计算第二个递增序列长度 
    } 
    for(i=0;i<n;i++)
    if(max<b[i])
    {
        max=b[i];
        j=i;
    }//用循环找出最大的递增序列长度,并记录该序列开头下标 
    用循环输出该段序列
    for(i=j;i<max-1;i++) 

3.代码截图
1232108-20180324195926943-974089896.png

4.PTA提交列表说明。
1232108-20180324200107260-514699661.png
刚开始用链表做,一直过不了,后来改成数组就比较明朗了,但是思路没变,可能链表用的还是不熟练

1.题目2:6-4 集合的基本运算(单链表)

  1. 设计思路(伪代码或流程图)
排序:
  p=L->next->next//p保留链表 
  L->next->next=NULL;//保留第一个数据,重构链表 
  while(p不为空) 
  {
    q为p的后继
  pre为L的工作指针
  在新表L中找到比p所指的更大的元素
  用头插法插入新表中即pre所指的链表 
  }
并集:
    pa指向ha链表, pb指向hb链表
    新建表hc,r为hc的工作指针
    while(pa,pb不为空)
    {
        if pa元素<pb元素
         将pa元素赋到hc中
         pa后移
        else  pa元素>pb元素
         将pb元素赋到hc中
         pb后移
        else(相等)
         将pb元素赋到hc中
         pa,pb同时后移 
     }
     如果pa剩余,将pa剩下的元素全赋给hc
     如果pb剩余,将pb剩下的元素全赋给hc
交集:
    pa指向ha链表, pb指向hb链表
    新建表hc,r为hc的工作指针
    while(pa不为空)
    {
        每次都将pb指向开头
        while(pb不为空)
        {
            if pa元素=pb元素
            { 
            将pb元素赋到hc中
            跳出循环} 
            else pb后移
         } 
         pa后移
     } 
     hc链尾置空
差集:
     pa指向ha链表, pb指向hb链表
     pc=hc=ha//pc为hc工作指针,同时hc利用ha的链表 
     while(pa,pb不为空)
     {
        if(pa元素<pb元素) 
            pc指向pa所指的元素,同时pa后移 
        else if pa元素>pb元素
        pb后移
        else//相等 
        {
            将pc的后继改为pa的后继
            pa 后移 
         } 

3.代码截图
1232108-20180324203838135-1928989544.png
1232108-20180324203844026-782511549.png
1232108-20180324203917869-374395286.png
1232108-20180324203923154-885449701.png

4.PTA提交列表说明。
1232108-20180324204120532-504416161.png
建表时,指针忘了初始化

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

  1. 设计思路(伪代码或流程图)
中位数: 
    pa指向ha链表, pb指向hb链表
    int i存放新的有序表元素位置 
    while(pa,pb不为空)
    {
        if pa元素< pb元素
        将pa元素赋给s,i++;
        else
         将pb元素赋给s,i++;
         if i此时为中位数//i==(2n+1)+2 
         {
            输出此时s指向元素的值
             跳出循环 
         }
     } 

3.代码截图
1232108-20180324212000548-620967208.png

4.PTA提交列表说明。
1232108-20180324212046597-573226838.png

题目编译器忘改了

二、截图本周题目集的PTA最后排名(3分)
本次2个题目集总分:295分

1.顺序表PTA排名
黄炳炜
1232108-20180324212327645-944202010.png

2.链表PTA排名
黄炳炜
1232108-20180325111033651-1132578717.png

3.我的总分:
245

三、本周学习总结(2分)
1.谈谈你本周数据结构学习时间是如何安排,对自己安排满意么,若不满意,打算做什么改变?(1分)
安排内容:学习时间安排、编程时间安排、不懂问题是哪种方式交流?
晚自修看书阅读代码,回宿舍后开始打代码,遇到不会的,先百度,再问同学,实在不行再请教老师
目前还算满意这种方式

2.谈谈你对线性表的认识?(1分)
线性表就是用来存放一串元素,可以对这串元素进行增删改,线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的
线性表的顺序存储结构,指定的是用一段地址连续的存储单元一次存储线性表的数据元素。
线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的。
3.代码Git提交记录截图
1232108-20180325111913812-1129104571.png

转载于:https://www.cnblogs.com/hbw985609191/p/8641578.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值