数据结构 学习笔记之:线性表——顺序表、静态链表、动态链表(单链表、双链表、单循环链表、双循环链表,链式栈、链式队列)——基础概念大扫盲!

//

更多原创“uC/OS-II学习笔记之:系列”基础及嵌入式相关知识详解,请访问可乐虎博客:

http://blog.csdn.net/dcx1205

相信不会让您失望!!
//

一、线性表的概念:
    线性表是一个线性结构,它是一个含有n≥0个结点的有限序列,对于其中的结点,
有且仅有一个头结点没有前驱但有一个后继结点,有且仅有一个尾结点没有后继但有一个前驱结点,
其它的结点都有且仅有一个前驱和一个后继结点。

二、线性表的分类:
(1)顺序表:采用顺序存储结构的线性表,一般采用数组及其下标来描述。
     1)一般顺序表:能操作表中任意地方。
     2)顺序栈:仅能操作表头,先进后出。
     3)顺序队列:仅能操作表头和表尾,先进先出。

(2)静态链表:数组结点中的指针“域”存放的不是其后继结点在内存中的真实地址,
     而是该结点在数组中的位置,这样的线性表称之为静态链表;它是用数组和游标描述的线性表。

(3)动态链表:采用链式存储结构的线性表(单链表、双链表、单循环链表、双循环链表,链式栈、链式队列)

三、顺序表、静态链表、动态链表的特点:
(1)顺序表是将线性表中的元素按逻辑顺序依次存放在一组物理地址连续的存储单元中,
     顺序表的逻辑顺序与物理顺序是一致的;顺序表的存储空间是静态分配的,在
     程序执行前必须规定其存储空间的大小。

(2)静态链表是将线性表的元素存放在数组里,其逻辑顺序与物理顺序不一定相同;每个结点不仅存放元素,
     还存放其后继结点所在数组单元的下标(我们称其为游标)。静态链表在插入和删除元素时不需要移动元素,
     仅需修改游标即可,所以其具有快速插入和删除的特点。

(3)动态链表的结点是动态地分配存储的,即在需要时就开辟结点的存储空间,不需要时就释放空间,实现动态链接。
     其结点的指针域存放着后继结点的物理地址,这些地址都不一定是连续的。

(4)对顺序表和静态链表的总结:
     1)它们的物理结构(即存储结构)是相同的;
     2)都是在计算机内存中以数组的形式保存的线性表;
     3)是用一组地址连续的存储单元依次存储数据元素的线性结构,
        但两者的数据结构(逻辑结构)是不同的。
  

你可能感兴趣的:(数据结构,C/C++)