已知head 指向一个带头结点的单向链表,链表中每个节点包含字符型数据long 和和指向本结构节点的指针,编写程序实现如下图所示的逆置
时间: 2024-05-10 10:15:26 浏览: 105
已知head指向一个带头结点的单向链表
假设链表头结点为head,可以按照如下步骤逆置链表:
1. 定义三个指针:pre、p、next,分别指向当前节点的前一个节点、当前节点、当前节点的下一个节点。
2. 将p指针指向头结点的下一个节点,pre指向头结点。
3. 循环遍历链表,每次将p指针所指节点的next指针指向pre节点,然后将pre、p、next三个指针向后移动一个节点,直到p指针指向NULL。
4. 最后将头结点的next指针指向pre节点,完成链表的逆置。
具体代码实现如下:
```c
void reverseList(Node* head) {
if (head == NULL || head->next == NULL) {
return; // 链表为空或者只有一个节点,无需逆置
}
Node *pre = head, *p = head->next, *next; // 定义三个指针
pre->next = NULL; // 头结点的next指针置为NULL
while (p != NULL) {
next = p->next; // 先保存p节点的下一个节点
p->next = pre; // 将p节点的next指针指向pre节点
pre = p; // pre、p、next三个指针向后移动一个节点
p = next;
}
head->next = pre; // 将头结点的next指针指向pre节点
}
```
阅读全文