设线性表L=(a1,a2,a...,an-2,an-1,an)采用带头结点的单链表保存,链表中结点定义如下:
typedef struct node{
int data;
Struct node* next;
}NODE;
请设计一个空间复杂度为O(1)且时间上尽可能高效的算法,重新排列L中的各结点,得到线性表L`=(a1,an,a2,an-1,a3,an-2,……)。
要求:
(1)给出算法的基本设计思想
(2)根据设计思想,采用C或C++语言描述算法,关键之处给出注释。
(3)说明你所设计的算法的时间复杂度