上节,我们初步创建了一个静态链表,本节学习有关静态链表的一些基本操作,包括对表中数据元素的添加、删除、查找和更改。本节是建立在已成功创建静态链表的基础上,我们继续使用上节中建立好的静态链表学习本节内容,建立好的静态链表如图 1 所示:
可以看到,静态链表中存储的是无头结点的单链表。
(资料图片)
静态链表添加元素
例如,在图 1 的基础,将元素 4 添加到静态链表中的第 3 个位置上,实现过程如下:
从备用链表中摘除一个节点,用于存储元素 4;
找到表中第 2 个节点(添加位置的前一个节点,这里是数据元素 2),将元素 2 的游标赋值给新元素 4;
将元素 4 所在数组中的下标赋值给元素 2 的游标;
经过以上几步操作,数据元素 4 就成功地添加到了静态链表中,此时新的静态链表如图 2 所示:
由此,我们通过尝试编写 C 语言程序实现以上操作。读者可参考如下程序:
静态链表删除元素
静态链表中删除指定元素,只需实现以下 2 步操作:
将存有目标元素的节点从数据链表中摘除;
将摘除节点添加到备用链表,以便下次再用;
比较特殊的是,对于无头结点的数据链表来说,如果需要删除头结点,则势必会导致数据链表的表头不再位于数组下标为 1 的位置,换句话说,删除头结点之后,原数据链表中第二个结点将作为整个链表新的首元结点。
若问题中涉及大量删除元素的操作,建议读者在建立静态链表之初创建一个带有头节点的静态链表,方便实现删除链表中第一个数据元素的操作。
如下是针对无头结点的数据链表,实现删除操作的 C 语言代码:
静态链表查找元素
静态链表查找指定元素,由于我们只知道静态链表第一个元素所在数组中的位置,因此只能通过逐个遍历静态链表的方式,查找存有指定数据元素的节点。静态链表查找指定数据元素的 C 语言实现代码如下:
静态链表中更改数据
更改静态链表中的数据,只需找到目标元素所在的节点,直接更改节点中的数据域即可。实现此操作的 C 语言代码如下:
总结
这里给出以上对静态链表做 "增删查改" 操作的完整实现代码:
程序运行结果为:
静态链表为:1,2 2,3 3,0在第3的位置上插入元素4:1,2 2,4 4,3 3,0删除数据域为1的结点:2,4 4,3 3,0查找数据域为4的结点的位置:4将结点数据域为4改为5:2,4 5,3 3,0
标签: