前言
本篇开始,又会开始一个新的系列,数据结构,数据结构在算法或者是编程中的重要性是不言而喻,所以学好数据结构还是很有必要的。本篇主要介绍数据结构的第一个结构——线性表,主要分为以下几部分:
1.概念
2.存储结构
顺序存储链式存储
3.存储结构优缺点比较
4.表操作
单链表操作双链表操作
注:本系列语言会使用C语言进行,所以要看懂本系列,需要懂一些C语言基础。
概念
线性表是零个或多个具有相同特性的数据元素组成的有限序列,该序列中所含元素的个数叫做线性表的长度,线性表有以下几个特点:
首先是一个序列其次是有限的可以是有序的也可以是无序的,你可以把线性表理解成一队学生,可以让这些学生根据身高从小到大排列,也可以随机排成一列线性表的开始元素没有前驱元素只有后继元素,线性表的结束元素没有后继元素只有前驱元素,除了开头元素和结尾元素以外,每个元素都有且只有一个前驱元素和后继元素。
存储结构
线性表的存储结构有顺序存储结构和链式存储结构两种,前者称为顺序表,后者称为链表。
顺序存储结构
顺序表就是把线性表中的所有元素按照某种逻辑顺序,依次存储到从指定位置开始的一块连续的存储空间,重点是连续的存储空间。
数组长度和线性表的长度区别:数组长度是存放线性表的存储空间的长度,存储分配后这个量一般是不变的,线性表的长度是线性表中数据元素的个数,随着线性表插入和删除操作的进行,这个量是变化的。
顺序表的结构体定义:
typedefstruct
{
intdata[maxsize];//建立存放int类型数据的一个数组
intlengeth;//存放顺序表的长度
}
复制代码
还有比较简洁的写法,如下:
intA[maxsize];
intn;
复制代码
线性表的顺序存储结构的优缺点
优点缺点
无须为表示表中元素之间的逻辑关系而增加额外的存储空间插入和删除操作需要移动大量元素
可以快速地存取表中任一位置的元素插入和删除操作需要移动大量元素
当线性表长度变化较大时,难以确定存储空间的容量
造成存储空间碎片
链式存储结构
链式存储结构是为了改善顺序存储结构的缺点,顺序存储结构最大的缺点