用单链表作为存储结构,实现线性表(a0,a1....an-1)就地逆置的操作,所谓就地指辅助空间应为O(1)
供参考:
//就地逆置 -- 不带头结点的链表 -- 引用
void reverse(SingleLinkedList * & head)
{
SingleLinkedList* p=NULL, * q=NULL;
p = head->next;
head->next = NULL;
while (p)
{
q = p;
p = p->next;
q->next = head;
head = q;
}
}
//就地逆置 -- 带头结点的链表
void reverse(SingleLinkedList * head)
{
SingleLinkedList* p=NULL, * q=NULL;
p = head->next;
head->next = NULL;
while (p)
{
q = p;
p = p->next;
q->next = head->next;
head->next = q;
}
}