【数据结构错题集】Chapter2 线性表

1.单链表删除指针【数据结构错题集】Chapter2 线性表
free(s)和free(p->next)是两个不同的指针,只是指向同一个地方。使用free(p->next)需要注意的是后续的链表是否都释放了,没有就会造成内存泄露,都释放了,也要将p->next置为空。

2.线性表&数组 插入删除【数据结构错题集】Chapter2 线性表

3.【数据结构错题集】Chapter2 线性表

4.线性表插入元素【数据结构错题集】Chapter2 线性表

5.头结点【数据结构错题集】Chapter2 线性表
带头结点带头结点带头结点

6.增加结点问题【数据结构错题集】Chapter2 线性表
题目读顺!
(一张网图)
【数据结构错题集】Chapter2 线性表

7.【数据结构错题集】Chapter2 线性表

8.存储方式选择(标号一样但是是两道题)【数据结构错题集】Chapter2 线性表
【数据结构错题集】Chapter2 线性表

9.双向循环链表插入元素【数据结构错题集】Chapter2 线性表

10.双向循环链表删除元素【数据结构错题集】Chapter2 线性表

11.静态链表【数据结构错题集】Chapter2 线性表

12.动态链表、静态链表、顺序表【数据结构错题集】Chapter2 线性表
【数据结构错题集】Chapter2 线性表
1、静态链表是用类似于数组方法实现的,是顺序的存储结构,在物理地址上是连续的,而且需要预先分配地址空间大小。所以静态链表的初始长度一般是固定的,在做插入和删除操作时不需要移动元素,仅需修改指针。
2、动态链表是用内存申请函数(malloc/new)动态申请内存的,所以在链表的长度上没有限制。动态链表因为是动态申请内存的,所以每个节点的物理地址不连续,要通过指针来顺序访问。
3、顺序表和静态链表的物理结构(即存储结构)是相同的,在计算机内存中以数组的形式保存的线性表,是用一组地址连续的存储单元依次存储数据元素的线性结构,但两者的数据结构(逻辑结构)是不同的:
顺序表:着眼于整个数组,采用动态分配的一维数组,仍然借助了指针进行数据操作。在线性表的插入和删除操作时,需要借助指针来移动元素。
静态链表:不设指针而使用链表结构,数组元素的一个分量用于存放数据,另一个用来作为“游标”指示下一结点在数组中的相对位置,数据的存储尽管是采用一维数组的形式存储在计算机中,但仍然是继承了链表指向不一定总是指向紧挨着其的结点。

13.判断题
(    )1. 链表的每个结点中都恰好包含一个指针。

(    )2. 链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动地将后续的各个单元向前移动。
(    )3 线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。 
(    )4. 线性表在物理存储空间中也一定是连续的。

1.错,链表中的结点可含多个指针域,分别存放多个指针。例如,双向链表中的结点可以含有两个指针域,分别存放指向其直接前趋和直接后继结点的指针。
2.错,链表的结点不会移动,只是指针内容改变。 
3.错,混淆了逻辑结构与物理结构,链表也是线性表!且即使是顺序表,也能存放记录型数据。 
4.错,线性表有两种存储方式,顺序存储和链式存储。后者不要求连续存放。