采用单链表实现数据元素的逆置
时间: 2023-04-10 14:04:49 浏览: 67
可以使用迭代或递归的方式实现单链表的逆置,以下是一种迭代的实现方式:
```
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* reverseList(ListNode* head) {
ListNode *prev = NULL, *curr = head;
while (curr != NULL) {
ListNode *next = curr->next;
curr->next = prev;
prev = curr;
curr = next;
}
return prev;
}
```
这个函数接受一个单链表的头节点指针,返回逆置后的头节点指针。具体实现中,我们使用三个指针 prev、curr 和 next,分别表示当前节点的前驱、当前节点和当前节点的后继。在循环中,我们不断将 curr 的 next 指针指向 prev,然后将 prev 和 curr 向后移动一个节点,直到 curr 为 NULL,此时 prev 就是逆置后的头节点。
相关问题
编写一个函数:将单链表中数据元素逆置。
好的,下面是将单链表中数据元素逆置的函数实现:
```
void reverseList(ListNode** head) {
if (*head == NULL || (*head)->next == NULL) {
return;
}
ListNode* prev = NULL;
ListNode* curr = *head;
ListNode* next = NULL;
while (curr != NULL) {
next = curr->next;
curr->next = prev;
prev = curr;
curr = next;
}
*head = prev;
}
```
该函数接收一个单链表的头结点指针的指针,通过遍历链表将节点指针逆置,最后重置头结点指针指向逆置后的链表的头结点。
编写一个c语言函数:将单链表中数据元素逆置。
好的,以下是将单链表中数据元素逆置的 C 语言函数代码:
```
void reverseList(ListNode* head) {
ListNode *prev = NULL, *curr = head, *next = NULL;
while(curr) {
next = curr->next;
curr->next = prev;
prev = curr;
curr = next;
}
head = prev;
}
```
其中,ListNode 表示单链表节点的数据结构,它包括一个 int 类型的数据成员 value 和一个指向下一个节点的指针 next:
```
typedef struct ListNode {
int value;
struct ListNode *next;
} ListNode;
```
这个函数的实现思路是遍历单链表,用三个指针 prev、curr 和 next 分别表示当前节点的前一个节点、当前节点和下一个节点,然后依次将相邻两个节点的指针关系反转,即将 curr->next 指向 prev,然后让 prev、curr、next 指针依次向后移动。最后将头节点指向新的尾节点,也就是 prev。