用链表依次存储1,2,3,4并实现反序输出
时间: 2023-04-12 11:03:23 浏览: 258
可以使用单向链表来依次存储1,2,3,4,具体实现如下:
1. 定义链表节点结构体
```c
typedef struct ListNode {
int val; // 节点值
struct ListNode *next; // 指向下一个节点的指针
} ListNode;
```
2. 创建链表并添加节点
```c
ListNode* createList() {
ListNode *head = NULL, *tail = NULL;
for (int i = 1; i <= 4; i++) {
ListNode *node = (ListNode*)malloc(sizeof(ListNode));
node->val = i;
node->next = NULL;
if (head == NULL) {
head = tail = node;
} else {
tail->next = node;
tail = node;
}
}
return head;
}
```
3. 反序输出链表
```c
void reversePrint(ListNode *head) {
if (head == NULL) {
return;
}
reversePrint(head->next);
printf("%d ", head->val);
}
```
完整代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
ListNode* createList() {
ListNode *head = NULL, *tail = NULL;
for (int i = 1; i <= 4; i++) {
ListNode *node = (ListNode*)malloc(sizeof(ListNode));
node->val = i;
node->next = NULL;
if (head == NULL) {
head = tail = node;
} else {
tail->next = node;
tail = node;
}
}
return head;
}
void reversePrint(ListNode *head) {
if (head == NULL) {
return;
}
reversePrint(head->next);
printf("%d ", head->val);
}
int main() {
ListNode *head = createList();
reversePrint(head);
return ;
}
```