本题要求实现一个函数,将给定单向链表逆置,即表头置为表尾,表尾置为表头。链表结点定义如下
时间: 2023-04-25 08:06:01 浏览: 148
链表的逆置
链表结点定义如下:
```
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和next,分别表示当前结点的前一个结点、当前结点和下一个结点。在循环中,将当前结点的next指针指向prev,然后将prev和curr向后移动一个结点,直到curr为NULL,此时prev指向原链表的最后一个结点,即逆置后的链表的头结点。
阅读全文