linux c 单链表翻转,并将翻转后的key打印
时间: 2024-11-23 09:40:21 浏览: 5
在 Linux C 语言中,单链表的反转通常涉及到两个步骤:创建一个新的头节点(指向原列表的最后一个元素),然后逐个更新节点的指向前驱。这里有一个示例,展示如何反转一个动态分配的单链表,并打印出关键值(如果链表元素有键值对的话):
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int key;
struct Node* next;
} Node;
Node* reverseList(Node* head) {
Node* prev = NULL;
Node* current = head;
Node* next_temp;
while (current != NULL) {
next_temp = current->next;
current->next = prev;
prev = current;
current = next_temp;
}
return prev;
}
void printKeys(Node* node) {
while (node != NULL) {
printf("%d ", node->key); // 打印节点的key
node = node->next;
}
printf("\n");
}
int main() {
// 创建一个单链表示例
Node* head = createLinkedList(); // 这里需要你自己实现createLinkedList函数,创建链表并设置初始节点
if (head != NULL) {
// 反转链表
head = reverseList(head);
// 打印反转后的key
printKeys(head);
// 清理内存
destroyLinkedList(head); // 自己实现的destroyLinkedList函数,释放链表资源
} else {
printf("Error: Empty list.\n");
}
return 0;
}
```
注意,你需要自己编写`createLinkedList`和`destroyLinkedList`这两个辅助函数,分别用于初始化链表和释放链表资源。`printKeys`函数用于遍历并打印链表中的节点键值。
阅读全文