线性表笔记

来源:互联网 发布:c语言简单小游戏 编辑:程序博客网 时间:2024/06/06 13:25

一:

1.线性表L=(a1,a2,...an),除第一个和最后一个元素外,其余每个元素都有且仅有一个直接前驱和一个直接后继。

2.对单链表存储结构,数据域用于存储线性表的一个数据元素,指针域用于指向本节点的直接后继节点,NULL称为空指针,它不指向任何节点只起标识作用,所有节点(包含数据和指针两项)通过指针的链接而阻止成单链表。

3.对一个长度为n的顺序表,在第i个元素(1<=I<=n+1)之前插入一个新元素时需要向右移动 n-i+1 个元素。

4.线性表采用链式存储时,其地址连续与否均可。线性表的链式存储可用连续或不连续的存储单元来存储线性表中的元素,也即线性表中的元素存储地址连续与否均可。

5.用链表表示线性表的有点是便于元素(节点)的插入和删除。

6.线性表采用顺序存储,必须占用一段地址连续的单元,线性表采用顺序存储便于随机存取表中任一元素,但也产生了在插入和删除操作中需要移动大量元素的问题。

7.对长度为n且顺序存储的线性表,在任何位置上操作都是等概率的情况下,插入一个元素平均需要移动表中的n/2元素。

8.在某线性表中最常用的操作是在最后易购元素之后插入一个新元素或者删除第一个元素,则最好采用仅有尾指针的循环链表,仅有尾指针的循环链表可以很容易地访问到表头节点和表尾节点。

9.对单链表来说,只有从头节点开始才能查找链表中的全部节点。对双向链表来说,节点*p的存储位置既保存于其前驱结点的后继指针,右保存于其后继节点的前驱指针中。对循环链表来说,从表中任一节点出发都能通过后移操作扫描整个循环链表,但没有前驱指针,所以不能进行前移操作。

10.若某线性表中最常用的操作是取第i个元素和查找第i个元素的前驱,则采用顺序表存储方法最节省时间。

二:

1.对表长为n的顺序表,当在任何位置上插入或删除一个元素的概率都相等时,插入一个元素所移动的元素平均个数为n/2,删除一个元素所需移动的平均个数为(n-1)/2.

2.便于插入和删除操作的是静态链表,单链表,双向链表,循环链表。

3.从表中任一节点出发都能扫描整个表的是双向链表,循环链表。

三:

1.在单链表中设置头节点的作用是使单链表的操作在各种情况下统一。

2.设单链表的节点结构为(data,next),next为指针域。已知指针px指向单链表中data为x的节点,指针py指向data为y的新节点;若将节点y插入到节点x之后,则需要执行以下语句py->next=->px->next; px->next=py;

3.在两个节点之间插入一个新节点时,双向链表需要修改的指针共有4个,单链表则为2个。

4.顺序存储结构使线性表中逻辑上相邻的数据元素,在物理位置上也相邻。因此,这种表便于随机访问,是一种随机存取结构。

5.对一个线性表分别进行遍历和逆置运算,其最好的时间复杂度量级分别为O(n)。

6.在一循环链表中,表尾节点指针域的值与表头指针的值相同。

7.求顺序表和单链表长度的时间都复杂度分别为O(1),O(n)。

8.在一个不带头节点的单链表中,在表头插入或删除与在其他位置插入或删除其操作过程不同。

9.在线性表的顺序存储中,元素之间的逻辑关系是通过存储位置决定的;在线性表的链式存储中,元素之间的逻辑关系是通过指针决定的。

10.单链表表示法的基本思想是用指针表示节点的逻辑关系。

四:

1.线性表的存储有顺序表和链表两种形式;顺序表的逻辑顺序和存储书奴蓄一致,而链表的逻辑顺序和存储顺序不一致。

2.头指针指向头节点而不是数据节点,

3.顺序存储的线性表可以随机存取。

4.单链表必须从表头指针开始顺序查找到该节点后才能访问这个节点,因此的单链表不是随机存取的存取结构。

5.在线性表的顺序存储结构中,插入和删除时移动元素的个数与该元素的位置有关。


原创粉丝点击