模拟链表:
和链表相似,只不过将链表的next域用一个数组表示。数组data用来存放具体数字,而另一个数组right用来存放当前序列中每一个元素右边的元素在数组data中的位置。
例如:
data数组:(从1开始存储,0位置空着)
序号 : 1 2 3 4 5 6
值 : 4 6 3 7 9 0
right数组:
序号 : 1 2 3 4 5 6
值 : 5 3 0 6 4 2
说明:
从right数组中可以看出:
1号元素右边元素在5号位置,即:2号 = data[5] = 9
而5号位置右边的元素在4号位置,即:3号 = data[right[5]] = data[4] = 7
。。。。。。
需要注意的是,3位置右边元素在0位置上,意味着结束
到最后我们就可以找到整个链表连起来的元素了:
4 9 7 0 6 3
那如果想在7后面插入元素10呢
新链表:4 9 7 10 0 6 3
那么可以这样做:
data数组:(从1开始存储,0位置空着)
序号 : 1 2 3 4 5 6 7
值 : 4 6 3 7 9 0 10
right数组:
序号 : 1 2 3 4 5 6 7
值 : 5 3 0 7 4 2 6
再添加一个元素为data[4](之前的值)
数组模拟的链表也可以实现排序,下面给出了排序的代码实现:
运行结果:
-
顶
- 0
-
踩