C语言不含头节点的链表倒置
时间: 2023-04-07 14:03:49 浏览: 66
可以使用三个指针来实现链表的倒置,具体实现方法可以参考以下代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node *next;
} Node;
Node* reverseList(Node *head) {
Node *prev = NULL;
Node *curr = head;
Node *next = NULL;
while (curr != NULL) {
next = curr->next;
curr->next = prev;
prev = curr;
curr = next;
}
return prev;
}
int main() {
Node *head = NULL;
Node *node1 = (Node*)malloc(sizeof(Node));
Node *node2 = (Node*)malloc(sizeof(Node));
Node *node3 = (Node*)malloc(sizeof(Node));
node1->data = 1;
node1->next = node2;
node2->data = 2;
node2->next = node3;
node3->data = 3;
node3->next = NULL;
head = node1;
printf("Original List: ");
while (head != NULL) {
printf("%d ", head->data);
head = head->next;
}
head = node1;
head = reverseList(head);
printf("\nReversed List: ");
while (head != NULL) {
printf("%d ", head->data);
head = head->next;
}
return 0;
}
```
输出结果为:
```
Original List: 1 2 3
Reversed List: 3 2 1
```