二、线性表

(内容再补)

线性表(Linear List)由n (n>0) 个数据特征相同的元素(结点)组成的有限序列。

  • 线性表的逻辑结构特征,对于非空的线性表:
    1.有且仅有一个开始节点a1,没有直接前趋。
    2.有且仅有一个终结结点an,没有直接后继。
    3.其余的内部结点ai (2≤i≤n-1)都有且仅有一个直接前趋an-1和一个直接后继an+1。
    (ps:循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储),但是把最后一个数据元素的尾指针指向了首位结点)

  • 线性表的基本运算:构造、销毁、清空 、判空、求长、按位序取值、按值定位、按值查找、求前趋、求后继、插入、删除、修改。

  • 线性表是逻辑概念,主要由顺序表示(顺序表)或链式表示(链表)。在实际应用中,常以 栈、 队列、 字符串等特殊形式使用。


顺序表(Sepuential List): 用一组地址连续的存储单元一次存储线性表的数据元素。

链表 (Linked List) 用一组任意的存储单元来存放线性表的数据元素,链表中逻辑次序于物理次序不一定相同。为了能正确的表示节点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其后继结点的地址信息(称为指针或链)。

  • 循环链表:在单链表中,将终端的指针域null改为指向开始结点。判断空链表的条件 head == head -> next ;

  • 双向链表: 双向链表由两条方向不同的链,即每个节点除next 域存放后继结点地址外,还增加一个指向其前趋的指针域 prior。如果将首尾连接起来即为双向循环链。

    (ps:双向循环链表的插入,须先链接新结点再断开原结点。)

                 q->prior=p;q->next=p->next;p->next->prior=q;p->next=q;

    存储密度(Storage Density) 指数据本身所占用的存储量和整个节点结构所占存储量之比,即:存储密度=(结点数据本身的存储量)/(节点结构所占存储总量);

    • 顺序表存储密度=1;链表存储密度<1。


猜你喜欢

转载自www.cnblogs.com/makelin/p/12146279.html