顺序表,非循环单链表,循环单链表,循环双链表
顺序表
按逻辑次序存放在一组地址连续的存储单元里.
非循环单链表
以链式结构存储的线性表位线性链表,其特点是线性表中的数据元素可以分布在任意的存储单元,逻辑相邻的元素存储单元可以是不连续的.
数据元素(数据信息data,指针next).
单链表:每个结点只有一个指针域,终端结点的指针域设置空NULL,又称非循环单链表,应另外设置头指针head指向开始结点,从而唯一确定链表.
循环单链表
如果将非循环单链表终端结点指针域的值NULL改为指向开始结点,则整个链表形成一个环,构成循环单链表.
循环单链表由头指针head唯一确定.循环单链表没有指针域为空的结点,所以指针p沿着链表做遍历操作时,其终止条件是判断它们是否等于头指针.
循环双链表
在循环单链表中,给每个结点增加一个指针域prior,用于指向其前驱结点,第一个点的前去指针prior指向最后一个结点.
循环双链表由头指针head唯一确定.
顺序表 链表
分配方式: 静态分配 动态分配
适用于线性表长度变化不大的情况 适用于线性表的长度变化较大,只要内存空间尚有空闲,就不会产生溢出.
若长度变化大,则存储规模难于预先确定
存储密度: 为1,节约存储空间 小于1
存储方法: 随机存储结构 需从第一个节点开始顺着链表滑动才能取得
适于查找操作较多的应用,对表的任一结
点都可在O(1)时间内直接取得.
插入删除操作: 平均要移动近一半的结点,尤其当每个结点 只需要修改指针,对于插入和删除较频繁的线性表,宜采用链表做存储结构.
的信息量较大时,所花得时间多
栈
栈是一种特殊的线性表,被广泛应用于表达式的计算\递归问题的非非递归求解以及停车场的调度模拟等各种实际问题.