用c语言写代码,把输入的以单链表为存储结构的线性表进行倒置
时间: 2024-05-04 07:21:07 浏览: 98
以下是用 C 语言实现单链表倒置的代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表结点
typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
// 创建链表
ListNode *createList() {
int n;
printf("请输入链表长度:");
scanf("%d", &n);
ListNode *head = NULL, *tail = NULL;
for (int i = 0; i < n; i++) {
int val;
printf("请输入第 %d 个结点的值:", i + 1);
scanf("%d", &val);
ListNode *node = (ListNode *) malloc(sizeof(ListNode));
node->val = val;
node->next = NULL;
if (head == NULL) {
head = tail = node;
} else {
tail->next = node;
tail = node;
}
}
return head;
}
// 输出链表
void printList(ListNode *head) {
printf("链表:");
for (ListNode *p = head; p != NULL; p = p->next) {
printf("%d ", p->val);
}
printf("\n");
}
// 倒置链表
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;
}
int main() {
// 创建链表
ListNode *head = createList();
// 输出链表
printList(head);
// 倒置链表
head = reverseList(head);
// 输出倒置后的链表
printList(head);
return 0;
}
```
该程序首先通过 `createList()` 函数创建一个单链表,然后通过 `printList()` 函数输出链表的元素。接着,通过 `reverseList()` 函数对链表进行倒置,并通过 `printList()` 函数输出倒置后的链表元素。
阅读全文