通过动画演示链表节点数据按链表顺序整理到数组前端的过程,理解交换数据并维护链接关系的算法思想。
使用列表 d 模拟链表结构(节点数 n>0),每个节点包含数据区域和指针区域,h 为头指针。现要按链表顺序将这 n 个节点中的数据依次存放到 d[0][0]、d[1][0]、…、d[n-1][0] 中,最终保持节点链接关系不变。有如下 Python 程序段(高亮行表示当前执行位置):
已知 d = [[15,4],[18,0],[12,5],[23,-1],[19,2],[29,3]],头指针 h = 1。
初始逻辑顺序为 1 → 0 → 4 → 2 → 5 → 3 → -1,对应数据依次为 18, 15, 19, 12, 29, 23。
| 索引 | d[i][0] | d[i][1] |
|---|
p 沿着原链表的逻辑顺序遍历,依次访问 1, 0, 4, 2, 5, 3。i 表示当前要填入正确数据的目标数组下标,从 0 开始向右移动。d[p][1] = d[i][1]、d[i][1] = p 重新连接指针,确保原链表中“下一个是 p”的节点现在指向 i,而 i 又指向 p 原先的下一个节点。