码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构之线性表

时间:2017-12-22 00:38:20      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:表头   nod   序列   alt   动态   出现   有一个   场景   地址   

导读

线性表是最基本最常见的一种数据结构。线性表是从逻辑上定义的和非线性相对的一种数据结构。线性结构中的元素之间是一对一的关系,而非线性结构中每个元素可能与其他元素有零个或多个关系。
 线性表(linear list ):线性表是具有相同特性的数据元素的有限序列。在线性表中,只有一个表头元素和一个表尾元素,其余元素都只有一个直接前驱和一个直接后继。(循环链表是特例)

一、存储结构

线性表在计算机中存储有两种方式,一种是顺序存储方式,一种是链式存储方式。顺序存储的线性表称为顺序表,而链式存储的线性表称为链表。

顺序存储(顺序表):

顺序存储就是按照线性表的逻辑顺序,在物理存储(存到计算机中)的时候依次地将元素存储到连续的地址空间中。也就是逻辑顺序和物理顺序相对应。我们平常使用的数组就是顺序表。

链式存储(链表):

想象这样一个场景,某班学生手拉手地出现在操场上,他们可以横着排、竖着排、或者曲线排,但是不影响他们是一个队列,也就是线性表,其中的关键在于“手拉手”。链表就是类似的结构,除头尾元素外的每个数据元素都能和它的直接前驱和直接后继“手拉手”,这里的手就好比一条链子,将每个元素逻辑串联起来。

在上面的例子中,手拉手这个队列相当于一个链表,那么队列中的人相当于一个节点(node),节点又细分为数据、指针(左指针和右指针,只有右指针的又叫单链表,有左右指针的叫双链表)。(好比人本身、左手和右手)。

技术分享图片

二、两种存储结构的比较

顺序表好比一排连续的座位,这些座位的物理位置和该顺序表的逻辑顺序是对应的,比如每个学生按学号入座。所以顺序表的特点显而易见:

(随机访问特性):由于是连续的,所以易查找。

(静态分配):顺序表要求分配连续的空间,所以需要预先进行空间分配。所以顺序表需要扩展时需要再开辟一串连续的空间。

链表和顺序表相对应,由于存储地址不连续,所以不支持随机访问,查找起来也就很慢,但相反地链表支持动态分配。

数据结构之线性表

标签:表头   nod   序列   alt   动态   出现   有一个   场景   地址   

原文地址:http://www.cnblogs.com/fzz9/p/8082721.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!