思路
要通过迭代的方法,一个一个将结点脱离出链表再建立关系。
如有这样一个链表:
第一步
首先要将head指向的第一个结点从链表中分离出:
实现的伪代码是:
head->next=NULL;
next=p->next; //存下p的下一个结点,以便可以迭代
p->next=head->next; //将第一个结点分离出来
head->next=p; //
p=next; //将p往后移
第二部
第三步
再这一步可以看都迭代结束的标识是
p==NULL;
实现代码:
void reversed(struct link* head)//原地逆序,带头节点
{
struct link* p, * s;
p = head->next;
head->next = NULL;
while (p != NULL)
{
s = p->next;
p->next = head->next;
head->next = p;
p = s;
show(head);
}
}