编写算法,对带头结点的单链表实现就地逆置(算法设计题)
思路:将头结点摘下,然后从第一结点开始,依次前插入到头结点的后面(头插法建立单链表),直到最后一个结点为止
代码如下(摘自:C语言中文网):
LinkList Reverse_l(LinkList &L) {
//L是带头结点的单链表,本算法将L就地逆置
p = L->next; //p为工作指针,从第一个元素结点开始
L->next = NULL; //先将头结点L的next域置为NULL
while (p != NULL) { //依次将元素结点摘下
r = p->next; //暂存p的后继
p->next = L->next; //将p结点插入到头结点之后
L->next = p;
p = r;
}
return L;
}
查看6道真题和解析
