假设有一带头结点的循环双链表表示的线性表L=(a1,a2,…,an-1,an)。 设计在时间和空间上都尽可能高效的算法,将线性表L改造成L=(a1,a3,…,an,…,a4,a2)。要求: 给出算法的基本设计思想。

admin2017-11-20  35

问题 假设有一带头结点的循环双链表表示的线性表L=(a1,a2,…,an-1,an)。
    设计在时间和空间上都尽可能高效的算法,将线性表L改造成L=(a1,a3,…,an,…,a4,a2)。要求:
给出算法的基本设计思想。

选项

答案基本设计思想:从改造后的线性表L可以看出,前部分结点为奇序号结点,并且递增;后部分结点为偶序号结点,并且递减。所以可以考虑建立两个新的循环双链表,一个带头结点的循环双链表L(由原先的L改造而来),保存原先线性表L的奇数号结点,可以采取尾插法,让其序号顺序递增;而另外一个不带头结点的循环双链表s,保存原先线性表L的偶数号结点,可以采取头捅法,让其序号顺序递减。最后,将L和s两个循环双链表连接成一个循环双链表L,并且L为其头结点指针。

解析
转载请注明原文地址:https://kaotiyun.com/show/yVRi777K
0

最新回复(0)