zoukankan      html  css  js  c++  java
  • 博客作业2---线性表

    一、PTA实验作业(5分)

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

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

    2. 设计思路(伪代码)

    #define MAXSIZE 100000 
    typedef struct{
        ElementType Data[MAXSIZE];
        Position Last; // 保存线性表中最后一个元素的位置 
    }list;
    
    定义结构体变量 L;
    定义整型变量 正整数的长度n 循环变量i 储存变化的地址k=1 递增的长度o=0 储存新一轮进行递增的地址p 
    
    Input n
    for i=0 to i=n 共n次 
        Input L.data[i];
    	if i!=0 and L.data递增     k++;
    	  
    	if k 大于 o
    	
    	   o 等于 k,记录递增的长度 
    	   p 等于 i-k+1
    	   
    	end if
    	
    	if i!=0 and L.data递减    重置k=1; 
    	
    end for
    
    for i=p to i=p+o-1 
       Output L.data[i] ;
    end for
    
    

    3.代码截图

    4.PTA提交列表说明

    提交错误说明一:从16分到10分:

    • A:10分:

    • B:16分:

    因为这道题是比较早做的,所以已经忘记了当时是怎么改的,所以就从提交记录里将两个代码对比了一下,发现两者的区别在于循环条件
    A的循环条件是从0开始的,但是我在循环前就令last=L->Data[0],所以接下来的next=L->Data[i]其实并没有起到判断其是否递增的功能,应当要从1开始

    提交错误说明二:从16分到20分

    因为到最后实在改不出来了,所以换了个思路写, 通过记录顺序表的最大递增长度以及每次开始递增的位置进行实现

    1.题目2:6-2 jmu-ds-单链表逆置

    2. 设计思路

     参数为新建的L 
     if  L等于NULL or L->next等于 NULL 
        return ;
     end if
     定义指针 pPre=L;储存先前指针
     定义指针 pCur=pPre->next ;储存当前指针
     定义指针 pNext=NULL 为后继指针
     while(pCur!=NULL)
          
            pNext=pCur->next;  
            pCur->next=pPre;  
            pPre=pCur;  
            pCur=pNext;
     end
     L->next=NULL;
     L=pPre; 
    
    

    3.代码截图(主函数以及创建的函数和题目3一样)

    逆序函数

    4.PTA提交列表说明

    一、格式错误:题目要求最后一个数据不跟空格

    二、链表空:题目要求输出NULL

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

    2. 设计思路(伪代码或流程图)

    1.主函数就是调用函数
    2.新建就是课本尾插法
    3.合并

    4.找中位数

    定义 指针TL
    TL=L
    定义整型变量s=0
    if NULL!=L or NULL!=L->next
       while TL->next !=NULL
           s++; 
    	   TL=TL->next
       end
       if s!=1 
          s=s/2;
       end if
       while s--!=0 L=L->next
       Ouput L->data
    

    3.代码截图

    1 主函数

    2 新建(尾插法)

    3 合并


    4 找中位数

    4.PTA提交列表说明

    一、编译错误:提交的时候忘记把C改成C++了

    二、从12分(部分正确)到25分

    • 错误一:审题有误,以为是求并集,所以把重复的元素删除了------测试点最大N通过
    • 错误二:最小N
      改正:
      原因:L是链表的表头,缩小了循环范围导致输出的是表头的内容,但表头无内容

    二、截图本周题目集的PTA最后排名(3分)

    本次2个题目集总分:295分

    曾文惠 201721123002

    1.顺序表PTA排名

    2.链表PTA排名

    3.我的总分:184

    三、本周学习总结(2分)

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

    本周的代码是从周三开始做的一直到作业提交的前一秒
    我看了一下自己的提交记录,有在晚自习前的,也有在半夜(这天好像是立志要完成几道题,但是最后好像没有实现.....),提交记录也是满满的辛酸,但是总的来说,这周也依然是十分努力,代码都是自己打的。
    对自己的安排满意吗?我觉得还是满意的吧,基本有时间都是在打代码,就是效率有点低,然后就是一直把握不了问同学的时间段,太早问了感觉自己的查错能力没有得到提升,坚持自己调又是一天一题的效率,目前是将自己遇到的错误都放到了word里,希望积少成多,可以慢慢积累经验,提高自己的差错能力。

    然后我还发现了一个问题还是老毛病:在写博客的时候发现回忆之前写的代码有点艰难..我个人是记性比较不好的,上学期的上机考也是经常得0分的,但是目前写代码都十分困难,在想还有什么时间段可以用来复习....

    2.谈谈你对线性表的认识?(1分)

    • 我的主观认识:线性表是最基本、最简单、也是最常用的一种数据结构,它是n个具有相同特性的数据元素的有限序列,在稍复杂的线性表中,一个数据元素可由多个数据项组成,线性表这个名字与它的功能也十分贴切,就像是一个表,主要由顺序表示或链式表示,各个元素之间又有一定的线性联系,使得一个个的元素连成了一个表。

    • 各章节总结:

    线性表通过顺序表和链表实现其基本运算

    1.顺序表-------线性表的顺序存储结构
    《1》抽象数据类型
    《2》时间复杂度
    2.链表----------线性表的链式储存结构
    《1》单链表
    《2》双链表
    《3》循环链表

    3.代码Git提交记录截图(...)

    error

    四、阅读代码(选做,加1分)

    因为如上流程图 ,我的合并函数十分的长,所以找了吴军霖同学的代码学习借鉴

    void ListMerge( List &A , List B ){
    	
    	List p = A->next;
    	List q = B->next;
    	List s = A;//以A为表头?
    	
    	while( p||q ){
    		List keep;
    		if( !q || p && p->data<=q->data  ){
    			keep = p->next;
    			s->next = p;
    			s = p ;
    			p = keep;
    		}
    		else{
    			keep = q->next;
    			s->next = q;
    			s = q ;
    			q = keep;
    		}
    	}
    	s->next = NULL;
    	
    }
    

  • 相关阅读:
    top命令
    MySQL基准测试(三)--开源工具与实例演示
    MySQLdump之single-transaction详解
    牛刀小试MySQL--日志文件
    MySQL基准测试(二)--方法
    MySQL基准测试(一)--原因,策略,思路
    MySQL实验准备(二)--Python模拟数据(MySQL数据库)
    MySQL实验准备(一)--环境准备
    InnoDB存储引擎概览
    单机多实例mysq 8.0l部署安装
  • 原文地址:https://www.cnblogs.com/Zeng99/p/8644512.html
Copyright © 2011-2022 走看看