一、定义和要实现的操作
线性表的定义很简单,只需要将一些数据串起来即可
对于这样一种数据结构,应该实现的操作有哪些?
InitList(*L):初始化操作,建立一个空的线性表LListEmpty(L):查看线性表是否为空。若线性表为空,返回true,否则返回falseClearList(*L):将线性表清空GetElem(L, i, *e):将线性表L的第i个元素值返回给eLocateElem(L, e):将线性表L中查找与给定值e相等的元素。如果查找成功,返回该元素在表中序号;否则,返回0表示查找失败。ListInsert(*L, i, e):在线性表L中的第i个位置插入新元素eListDelete(*L, i, *e):删除线性表L中第i个位置元素,并用e返回其值ListLength(L):返回线性表L的元素个数二、两种存储方式
在计算机里,最主要的两种存储方式为链式存储和顺序存储,链表用这两种存储方式都可以实现,就像下面这张图表示的一样。
三、链表的几种类型
上面根据存储方式定义的两种链表类型,接下来换一个角度,从链表的方向上看一下链表有几种:
3.1 单链表
3.2 双向链表
3.3 循环链表
循环链表是将头和尾链起来的链表,单向和双向链表都有循环链表,如下所示
