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提交记录截图

week-02 线性表的更多相关文章
- DS博客作业02—线性表
1.思维导图及学习体会 1.1第一章绪论知识点思维导图 1.2.谈谈你对线性表的认识及学习体会. 线性表最重要的就是对指针的操作,插入删除都是看指针的指向进行操作以达到改变节点,以达到目的的.对于上学 ...
- 2-7-集合运算(A-B)∪(B-A)-线性表-第2章-《数据结构》课本源码-严蔚敏吴伟民版
课本源码部分 第2章 线性表 - 集合运算(A-B)∪(B-A) ——<数据结构>-严蔚敏.吴伟民版 ★有疑问先阅读★ 源码使用说明 链接☛☛☛ <数据结构-C语言 ...
- 数据结构(1) 第一天 算法时间复杂度、线性表介绍、动态数组搭建(仿Vector)、单向链表搭建、企业链表思路
01 数据结构基本概念_大O表示法 无论n是多少都执行三个具体步骤 执行了12步 O(12)=>O(1) O(n) log 2 N = log c N / log c N (相当于两个对数进行了 ...
- 02线性表链式存储_LinkList--(线性表)
#include "stdio.h" #include "string.h" #include "ctype.h" #include &qu ...
- [置顶] ※数据结构※→☆线性表结构(stack)☆============栈 序列表结构(stack sequence)(六)
栈(stack)在计算机科学中是限定仅在表尾进行插入或删除操作的线性表.栈是一种数据结构,它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据.栈 ...
- 【数据结构】线性表&&顺序表详解和代码实例
喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 01 预备知识 1.0 什么是线性表? 线性表(List)是零个或者多个数据元素的有限序列. 首先它是一个序列.里面的元素是有顺 ...
- [数据结构 - 第3章] 线性表之单链表(C++实现)
一.类定义 单链表类的定义如下: #ifndef SIGNALLIST_H #define SIGNALLIST_H typedef int ElemType; /* "ElemType类型 ...
- 线性表Linearlist
顺序存储,链式存储,索引存储,散列存储 基本运算 SLIST 1.置空表 void SetNull(&L) 2.求长度 int Length(L) 3.取元素 ...
- 数据结构(Java描述)之线性表
基础概念 数据结构:是相互之间存在一种或多种关系的数据元素的集合. 逻辑结构和物理结构 关于数据结构,我们可以从逻辑结构和物理结构这两个维度去描述 逻辑结构是数据对象中数据元素之间的关系,是从逻辑意义 ...
- JAVASE02-Unit04: 集合框架 、 集合操作 —— 线性表
Unit04: 集合框架 . 集合操作 -- 线性表 操作集合元素相关方法 package day04; import java.util.ArrayList; import java.util.Co ...
随机推荐
- code for 1 - 分治
2017-08-02 17:23:14 writer:pprp 题意:将n分解为n/2, n%2, n/2三部分,再将n/2分解..得到一个序列只有0和1,给出[l, r]问l到r有几个1 题解:分治 ...
- MFC中如何在一个类中调用另一个类的控件
学习记录: 两个类,一个为主类 1个为:CCkDlg,主类 1个为: Https,用来做HTTPS请求获得页面状态. 测试界面如下: CCkDlg 类里定义函数 void CCkDlg::printf ...
- Python连接MongoDB操作
1.安装PyMongo 注意:请勿安装“bson”软件包. PyMongo配有自己的bson包; 执行“pip install bson”或“easy_install bson”则会安装与PyMong ...
- Pandas数据结构
Pandas处理以下三个数据结构 - 系列(Series) 数据帧(DataFrame) 面板(Panel) 这些数据结构构建在Numpy数组之上,这意味着它们很快. 维数和描述 考虑这些数据结构的最 ...
- Win7.还原默认打开方式
1.win7还原默认打开方式_百度知道.html(https://zhidao.baidu.com/question/1668708948433912307.html) Windows7:[47]打开 ...
- Spring中Bean的生命周期是怎样的
1.Spring对Bean进行实例化(相当于程序中的new Xx()) 2.Spring将值和Bean的引用注入进Bean对应的属性中 3.如果Bean实现了BeanNameAware接口,Sprin ...
- CMD下利用subst命令将一个文件夹镜像成本地的一个虚拟磁盘
我们都知道net use可以建立网络驱动器映射,这里不说了. 我今天刚看到这命令的,叫镜像虚拟磁盘subst命令,这个命令可以简化好多操作,比如一个常用的文件放在一个路径很深的文件夹中,每次我们想要操 ...
- js、jq、ajax之间的关系
一句话:js是一种客户端脚本语言,jq是在js基础上封装起来的一个开发工具,ajax是基于js的一种技术(异步刷新). javascript是一种在客户端执行的脚本语言,用来给网页添加动态功能,使网页 ...
- css清除浮动float的几种方法
摘要: css清除浮动float的三种方法总结,为什么清浮动?浮动会有那些影响? 一.抛一块问题砖(display: block)先看现象: 这里我没有给最外层的DIV.outer 设置高度, ...
- python 在头文件添加 #include \"stdafx.h\"\r\n
import osimport shutil#-*- coding:cp936 -*-import codecsfrom sys import argv def replace_all_files(p ...