将不带头结点的单链表逆置
时间: 2023-11-19 17:19:59 浏览: 304
给定一个不带头结点的单链表,写出将链表倒置的算法
5星 · 资源好评率100%
好的,我可以为您提供一个简单的算法来将不带头结点的单链表逆置。具体的实现方法如下:
1. 从原链表的头结点开始,定义三个指针pre、p和next,其中pre指向NULL,p指向头结点,next指向p的下一个结点。
2. 反复执行下列操作,直到p指向NULL:
(1) 将p的下一个结点指向pre,即p->next=pre;
(2) 将pre向右移动,即pre=p;
(3) 将p向右移动,即p=next;
(4) 将next向右移动,即next=p->next;
3. 最后将原链表的尾结点指向NULL,并将逆置后的链表的头结点指向原链表的尾结点。
下面是具体的代码实现:
void ReverseList(Node* head) {
Node* pre = NULL;
Node* p = head;
Node* next = p->next;
while (p != NULL) {
p->next = pre;
pre = p;
p = next;
if (next != NULL) {
next = next->next;
}
}
head->next = NULL;
head = pre;
}
希望我的回答对您有所帮助,如果您有其他问题,也欢迎随时提出。
阅读全文