链表逆转
时间: 2023-06-28 09:09:09 浏览: 75
链表逆转是一种常见的链表操作,可以将链表中的节点顺序颠倒过来。下面是一种常见的链表逆转的实现方式,你可以看一下。
```
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* reverseList(ListNode* head) {
ListNode* prev = NULL;
ListNode* curr = head;
while (curr != NULL) {
ListNode* next = curr->next;
curr->next = prev;
prev = curr;
curr = next;
}
return prev;
}
```
我们定义两个指针 prev 和 curr,初始时 prev 为 NULL,curr 为链表头节点。然后遍历链表,每次将 curr 的 next 指针指向 prev,同时将 prev 和 curr 往后移动一个节点。最终 prev 就是逆转后的链表头节点,返回即可。
需要注意的是,在逆转链表时要保证链表中没有环,否则逆转链表会导致链表中出现环,造成死循环。
相关问题
链表逆转 python
以下是 Python 中链表逆转的示例代码:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def reverseList(head: ListNode) -> ListNode:
prev = None
curr = head
while curr:
next_node = curr.next
curr.next = prev
prev = curr
curr = next_node
return prev
```
这里定义了一个 `ListNode` 类表示链表中的节点,其中 `val` 表示节点的值,`next` 表示指向下一个节点的指针。`reverseList` 函数接收链表的头节点作为参数,使用三个指针 `prev`、`curr` 和 `next_node` 分别表示当前节点的前一个节点、当前节点和当前节点的下一个节点。在遍历链表的过程中,将当前节点的指针指向前一个节点,然后将 `prev` 指针移动到当前节点,`curr` 指针移动到下一个节点,直至遍历完整个链表,最后返回反转后的链表的头节点 `prev`。
C++list辅助链表逆转
你可以使用C++中的std::list来实现链表逆转。下面是一个简单的示例代码:
```cpp
#include <iostream>
#include <list>
int main() {
std::list<int> myList;
// 添加元素到链表
myList.push_back(1);
myList.push_back(2);
myList.push_back(3);
myList.push_back(4);
myList.push_back(5);
std::cout << "原始链表: ";
for (auto it = myList.begin(); it != myList.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
// 使用std::reverse函数逆转链表
myList.reverse();
std::cout << "逆转后的链表: ";
for (auto it = myList.begin(); it != myList.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
return 0;
}
```
这段代码使用了std::list容器,并调用了其成员函数reverse来逆转链表。输出结果如下:
```
原始链表: 1 2 3 4 5
逆转后的链表: 5 4 3 2 1
```
希望对你有所帮助!如果还有其他问题,请随时提问。
相关推荐
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![ppt](https://img-home.csdnimg.cn/images/20210720083527.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)