软考之路--数据结构之线性表

数据就是数值,也就是我们通过观察、实验或计算得出的结果。数据有很多种,最简单的就是数字。数据也可以是文字、图像、声音等。数据可以用于科学研究、设计、查证等。结构,组成整体的各部分的搭配和安排,两者完美结合在一起,我们这样需要重新认识她,对她重新审视与定义:数据结构是程序设计的重要理论和技术基础,她所讨论的内容和技术,对从事软件项目的开发有重要作用,通过学习数据结构,我们学会从问题出发,分析和研究计算机加工的数据的特性,以便为应用所设计的数据悬着适当的逻辑结构、存储结构及其相应的操作方法,为提高应用计算机解决问题的效率服务。

学习希赛视频有一段日子了,这一段日子夹杂的自考和等级考,夸张点儿来说,有过欢笑,也有过泪水,欢笑的是昨天等级考试抽到的两道大题都是原题,泪水的是,第二题有一个空少些了一个return,又想起那句话,总是要等到考试的时候,才知道该念的书没有念,大题一共六十分,如果按往年的算分制度,需要占百分之六十,也就是说六十分要考三十六分才算合格,可是我满打满算,最后一题只能拿到三十四分,可是后话是,过了我开心,过不了更开心,可以再学一遍C++`(*∩_∩*)′,今天小编主要来讲解一下数据结构的数据表,首先,我们来看一下基本数据结构的一张图:

了解了基本数据结构,进入到我们今天的主题线性表,该博文主要围绕以下内容展开进行阐述:

一、线性表

    概念:线性表是最简单,最基本,也是最常用的一种线性结构,她有两种存储存储方法,顺序存储和链式存储,主要的基本操作是插入,删除和查找等。

分类:线性表分为顺序表和链表,其中链表又分为单链表、循环链表和双链表,依次进行分析。

顺序表,如下图所示:

顺序结构:顺序结构是最简单的程序结构,也是最常用的程序结构,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。举个简单的例子,a
= 3,b = 5,现交换a,b的值,这个问题就好像交换两个杯子水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序为: c = a; a = b; b = c; 执行结果是a = 5,b = c = 3。

链表,如下图所示:

链表:链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作复杂。

链表的类别:单链表、循环链表、双链表。如下图所示:

数据域:存放数据;指针域:存放指向下一个节点的地址;循环链表:最后一个节点她的下一个节点是头节点。

双链表:有两个指针域,从两个不同的方向把链表链接起来。双链表可以从两个方向移动,单链表朝单一的方向移动,双链表的灵活度优于单链表。双链表的开支会大一些,因为她有两个指针域。

单双链表的删除和插入:单链表的删除:结点的删除,删除a2,方法:把a1的指针域直接指向a3,跳过a2,就可以了,a2就从链表中删除了,还有一个工作需要把a2释放掉。把要删除的前序结点,前序结点的next域指向她的后序结点。单链表的插入:删除结点是把前序指向后序,那么插入一个结点就是一个逆向的过程,把新的结点,从需要插入的位置,把她的前序结点next域指向新加入的结点,再把新加入的结点的next域指向下一个结点,就可以了。双链表的删除和插入:牵涉两个方面,从左至右列出来,从右至左列出来,并不是简单的一条链过去,一条链过来就完成的,我们需要把四个步骤都写出来,把两个操作的第一步都先完成,完成之后,接着第二步。

顺序表PK链表

二、队列

概念:队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。比如,去食堂排队,排头最先买到菜,后面来的同学排的队尾;进车站时,安检行李,先进去的最先出来,后进去的后出来。


分类
:顺序队列和循坏队列;队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将是最后被删除的元素,因此队列又称为“先进先出”(FIFO—first in first
out)的线性表。如下图:

 顺序队列:

  循环队列:

ps:“对”字写错了,大家不要见笑哦。

三、栈

栈:并不是一个实实在在存在的东西,是逻辑上的一个概念,一种思想,一种理念,她不像链式存储和顺序存储一个一个结点,很有规律,她是在顺序存储和链式存储之上的,是逻辑的概念,栈既可以用链式结构来实现,也可以用顺序结构来实现--即数组。定义一个规则,先进后出即可。如下:

 小编寄语:线性表(亦作顺序表)是最基本、最简单、也是最常用的一种数据结构。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。线性表的逻辑结构简单,便于实现和操作。因此,线性表这种数据结构在实际应用中是广泛采用的一种数据结构。其中栈和队列是一种特殊的线性表,软考之路,未完待续......

时间: 2024-10-13 19:17:21

软考之路--数据结构之线性表的相关文章

我的软考之路(七)——数据结构与算法(5)之查找

上篇博文我重点介绍了八大内部排序,这篇博文(数据结构与算法的最后一课)重点介绍查找,我们依旧沿用上篇博文的风格,先简单介绍,再以例子重点讲解. 下面我们开始今天的旅行,首先祝你旅行愉快,呵呵. 静态查找 若查找目的是为了查询某个特定的数据是否在表中或检索某个特定数据的各种属性,则此类查找表为静态查找表. 1.顺序查找 基本原理:从表一端开始逐个和关键字进行比较,若找到一个记录和给定值相等,则查找成功,反之失败.再简单点就是,一个一个的比大小,看看是否相等. 例子: 顺序查找更适合于顺序存储结构和

我的软考之路(五)——数据结构与算法(3)之图

图跟树一样,也是非线性结构,咋看起来有点复杂,其实它很简单.树具有层次关系,上层元素可以与下一个多个元素连接,但是只能和上层的一个元素连接.在图结构中,节点间的连接是任意的,任何一个元素都可以与其他元素连接. 图相对而言很简单,我们只介绍的图的遍历和最小生成树,现在我们开始. 遍历 1.概念 从图中某一个顶点出发,访问图中的每一个结点,并要求只能访问一次,不能重复访问. 2.方法 (1)广度优先遍历 基本思想:首先访问顶点,再访问顶点的全部未访问的邻结点,再访问邻结点的所有结点即可(类似树的层次

我的软考之路(六)——数据结构与算法(4)之八大排序

排序是编程的基础,在程序中会常常使用,好的排序方法能够帮助你提高程序执行的效率,所以学好排序,打好基础,对于程序的优化会手到擒来.不管你的技术多么强,假设没有基础也强不到哪去. 不多说了,我们直接进入今天的主题. 总有人说排序非常难,可是我总认为非常easy,我们仅仅须要了解基本思想就好了,通过简单的样例来加深理解. 1.直接插入排序 (1)简单介绍:直接插入排序,从字面意思能够看出,直接插入数据完毕排序. (2)基本思想:在插入第i个数时,如果前i-1数已经排好序了,仅仅须要将第i个数插入到i

我的软考之路(四)——数据结构和算法(2)树和二叉树

上鲍恩描述了数据结构的线性结构,我们引入非线性结构本博客-树和二叉树.我想向大家介绍一些基本概念树,树遍历,然后介绍了二叉树的概念和特征.和二叉树遍历.叉树的对照,总结. 树为了描写叙述现实世界的层次结构,树结构中一个数据元素能够有两个或两个以上的直接后继元素. 树的基本概念: 树的概念是学习树的关键所在.掌握了树的基本概念,学会树与二叉树,so easy. 我通过一棵树来了解树的基本概念.例如以下图 1.结点的度 结点的度是子结点的个数.比如:结点1有三个字结点2,3,4,所以结点1的度为3.

我的软考之路(九)——总结篇

经过两个月的备战,软考总算结束了.软考虽然结束了,但是还需要简单的总结一下得与失.我从时间安排,到讲课做真题简单的回顾一下软考的整个过程. 时间安排: 对于时间的安排,整个小组成员每个人都有自己的看法,我就不在这里吐槽了.对于我来说,时间安排有点仓促,看书的时间是拿晚上的休息时间补过来的.看书让我将课本的概念性的知识简单的过了一遍,即补充了当初学习的不足,也恶补一下基本知识,不管对于软考,还是对于后面的继续学习都是有帮助的. 时间安排,没有什么合理与不合理.以松散的状态完成一项任务的时间是合理的

软考之路(五)---编译原理 概念篇

从组成原理到编译原理,都是相互联系的,学习的知识都是在层层推进,顺利成章的,整个软考的所有的知识都可以从计算机的发展(组成原理)--->软件的开发(软件工程)--->软件的算法设计(数据结构)-->高级语言写的系统--->在计算机上识别(编译原理)--->各个系统的背后数据的支持--->(数据库)---->---网络知识的应用---->网络基础--,可以把整个所有的软考的课本给串起来,这些都是构成现在丰富世界的必不可少的条件. 当然由于机器语言由0.1组成,

软考之路--计算机背后的故事

文法:1.法制:法规. 2.文章的作法. 3.语法.语言的结构方式.包括词的构成和变化﹐词组和句子的组织.文法即文章的书写法规,一般用来指以文字.词语.短句.句子的编排而组成的完整语句和文章的合理性组织.这个是我们小时候接触过的关于文法的概念,那个时候的文法总是会和主语,宾语,谓语等联系在一起. 二十年过去了,今天她再次出现在我面前,还是一样的眼神,藏在记忆深处的"文法"跟眼前的这个"她"有什么不一样呢?在计算机科学中,文法是编译原理的基础,是描述一门程序设计语言和

软考之路(八)--- 大总结

软考考试伴随着24号完成了,但是学习才真正的开始,从整个准备软考过程,到考完,整体上来说时间对于自己来说还算是充裕的,收获是非常大的,不了解.不会的.模糊的知识越学发现越多啊,当然这期间的得与失,总结总结为Java的学习起到一个促进的作用. 自考PK软考PK专业课 非常重要的是自考的科目这次全部的通过,整个自考的过程对于非计算机系的我来说,算是极大程度上补充了很多计算机相关方面的知识,自考顺利成章的到软考,当看到软考的内容之后,心里多少有些底了,第一感觉:自考中大部分都学习过,解决了不怕不知道就

软考之路--用文字记录这个美丽的进程

进程,百度百科对她这样进行阐述,进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动.它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元.,在小编的理解世界中,进程就是一段程序的执行过程,就好比中午要去食堂吃饭,从十一教走到中快食堂的路上的这个过程,就是进程,纯属小编的个人傻傻的理解,有不同想法的小伙伴欢迎讨论交流,这篇博文,小编主要来讲解一下进程的相关知识,如下图所示,小编会根据下图的框架,进行一一讲解,用文字记录这个美丽的进程......