已知head指想一个带头结点的单向链表,链表的每个结点包含数据long和指向本结构结点的指针,编写函数实现逆置 head…a…b…c…d…null head…d…c…b…a…null
时间: 2023-06-23 07:08:31 浏览: 160
数据结构算法 习题 答案 带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意不设头指针).pdf
5星 · 资源好评率100%
可以通过遍历链表,依次将每个节点的指针指向前一个节点,从而实现链表的逆置。
具体实现步骤如下:
1. 定义三个指针prev、cur、next,分别表示当前节点的前一个节点、当前节点和后一个节点。
2. 遍历链表,将cur的next指向prev,然后依次将prev、cur、next向后移动一个节点。
3. 当遍历到最后一个节点时,将链表头节点head的next指向最后一个节点,最后将head的next置为null。
下面是具体的代码实现:
```c
void reverseList(struct ListNode* head) {
struct ListNode* prev = NULL;
struct ListNode* cur = head->next;
struct ListNode* next = NULL;
// 遍历链表
while (cur != NULL) {
next = cur->next;
cur->next = prev;
prev = cur;
cur = next;
}
// 将链表头节点指向最后一个节点
head->next = prev;
}
```
需要注意的是,这里假设链表的头结点是一个带头结点的节点,即head->next指向第一个实际的节点。如果链表没有头结点,需要对函数进行一些修改。
阅读全文