zoukankan      html  css  js  c++  java
  • week-02 线性表

    一、PTA实验作业

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

    1. 设计思路

    定义结构体List,定义数组Data[maxsize]表示顺序表元素,变量Position表示位置,变量Length表示顺序表子列长度,变量Maxposition表示最长的递增子序列最后一个元素的位置,变量 L->Maxlength表示最长的递增子序列长度。
    定义结构体L,变量n表示顺序表长度,变量j表示数组下标
    for i=0 to n-1
        Data[i]存储顺序表元素
    end for
    for i=0 to n-1(i+=此段子列长度)
        判断后一个元素是否比前一个元素小,若是,则开始新一段子列的长度计算与位置记录
        比较此段子列长度与之前子列长度最大值
    end for
    输出最长的递增子序列
    

    2.代码截图


    3.PTA提交列表说明


    编译错误: 在C编译器中调用C++头文件
    解决方法:将编译器改成C++编译器

    题目2:链表 6-5判断链表结点对称

    1. 设计思路

    初始化带头结点空双向循环链表: 给头节点分配存储空间并将指针域设为空
    销毁链表: 定义两个结构体指针p和r分别指向两个相邻结点,通过循环顺序删除结点
    正向顺序输出链表:  定义结构体指针p,指针循环后移,依次输出结点元素
    在第i个位置插入结点: 链表为空跳出函数,否则,定义两个结构体指针p和r,通过循环使指针p指向待插入位置的前一个结点,然后进行插入操作
    判断链表是否对称: 若链表为空,跳出循环;若链表不为空,定义两个结构体指针p和r,p指向第一个存储元素的结点,r通过循环指向尾结点,两指针循环向中间移动,判断对称位置元素是否相等
    

    2.代码截图


    3.PTA提交列表说明


    答案错误:偶数对称测试点运行结果为段错误
    解决方法:将

    while(p!=r){
    		if(p->data!=r->data) return 0;
    		p=p->next;
    		r=r->prior;
    	} 
    

    改为

    while(p!=r&&r->next!=p){
    		if(p->data!=r->data) return 0;
    		p=p->next;
    		r=r->prior;
    	} 
    

    题目3:6-2 单链表逆置

    1. 设计思路

    若链表为空或只有一个元素,不对链表进行逆置操作
    若链表有多个元素,定义两个结构体指针p和q,循环将首元素结点后的结点通过头插法插到头结点之后,使元素结点逆置
    

    2.代码截图


    3.PTA提交列表说明

    此题经测试修改才交到PTA上,过程中题例输入,答案错误,重复输出首元素,原因是输出首元素后未将指针后移就输出数据
    解决方法:将

    cout<<p->data;
    	p=p->next;
    	while(p){
      	cout<<" "<<p->data;
      }
    

    改为

    cout<<p->data;
    	p=p->next;
    	while(p){
      	cout<<" "<<p->data;
        p=p->next;
      }
    

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

    1.顺序表PTA排名

    2.链表PTA排名

    3.我的总分:1.5分

    三、本周学习总结

    1.学习时间安排:分散在做题时间里

    编程时间安排:大部分课余时间
    交流方式:在网上查找,和同学讨论
    对自己的安排不满意,做题效率低下
    打算做出的改变:先看完课本内容再去做题,规范做题格式,熟悉思路与方法

    2.对线性表的认识:

    线性表是最基本、最简单、也是最常用的一种数据结构。线性表中数据元素之间的关系是一对一的关系,除了第一个和最后一个数据元素之外,其它数据元素都有前驱和后继。

    顺序表:
    优点: 用一组地址连续的存储单元依次存储数据元素,可以直接找到某一位置上的元素。
    在已知数据元素个数的情况下,每个元素的存储密度大,为1。
    缺点:插入和删除的时候要将插入点后 的所有元素依次后移或前移。
    在未知数据元素个数的情况下,开辟空间过大会造成较大的空间浪费。

    链表:
    优点:在未知数据元素个数的情况下,虽然有非数据项的指针占空间,但比起顺序空间浪费
    会比较少。
    插入和删除的时候只需改变几个几个结点的指针域,不需移动结点位置,耗时短。
    缺点:每个结点开辟的位置都是随机的,会产生很多小的碎片空间。

    3.代码Git提交记录截图

  • 相关阅读:
    类的加载过程
    ASCII码表
    uboot main_loop函数分析
    串行CPU设计
    __attribute__ ((section(".text")))的测试
    NandFlash
    测试gcc的优化选项
    如何编写一个简单的makefile
    UBOOT的多支持性与可裁剪性
    函数指针的使用
  • 原文地址:https://www.cnblogs.com/lanjinghui/p/8639838.html
Copyright © 2011-2022 走看看