单链表逆序输出c语言
时间: 2023-10-11 22:10:29 浏览: 108
单链表逆序输出的C语言实现方法可以使用递归来实现。可以定义一个递归函数,该函数先递归调用自身打印链表的后继结点,然后再打印当前结点的数据。最后,在主函数中调用该递归函数即可实现逆序输出。
示例代码如下:
```c
void R_Print(LNode* L) {
if(L->next != NULL) {
R_Print(L->next); // 递归调用自身打印后继结点
}
printf("%d\n", L->data); // 打印当前结点的数据
return;
}
```
相关问题
用C语言写一个将单链表逆序输出的程序
以下是用C语言写一个将单链表逆序输出的程序的代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node* next;
};
void reversePrint(struct Node* head) {
if (head == NULL) {
return;
}
reversePrint(head->next);
printf("%d ", head->data);
}
int main() {
struct Node* head = NULL;
struct Node* second = NULL;
struct Node* third = NULL;
head = (struct Node*)malloc(sizeof(struct Node));
second = (struct Node*)malloc(sizeof(struct Node));
third = (struct Node*)malloc(sizeof(struct Node));
head->data = 1;
head->next = second;
second->data = 2;
second->next = third;
third->data = 3;
third->next = NULL;
reversePrint(head);
return 0;
}
```
这个程序使用递归的方式将单链表逆序输出。首先判断链表是否为空,如果不为空,就递归调用函数,将链表的下一个节点作为参数传入,直到链表的最后一个节点。然后再依次输出每个节点的值。
用C语言实现从键盘依次输入正整数,利用尾插法形成单链表依次输出,再将输入的数据逆序建立单链表并输出。
好的,我可以回答这个问题。
以下是用C语言实现从键盘输入正整数,利用尾插法形成单链表并输出的代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义单链表的结构体
typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
// 尾插法建立单链表
ListNode* createList() {
ListNode *head = NULL, *tail = NULL;
int num;
while (scanf("%d", &num) == 1 && num > 0) {
ListNode *node = (ListNode*) malloc(sizeof(ListNode));
node->val = num;
node->next = NULL;
if (head == NULL) {
head = tail = node;
} else {
tail->next = node;
tail = node;
}
}
return head;
}
// 输出单链表
void printList(ListNode* head) {
while (head != NULL) {
printf("%d ", head->val);
head = head->next;
}
printf("\n");
}
int main() {
// 读入数据并建立单链表
printf("Please input integers separated by spaces, end with a non-positive integer:\n");
ListNode *head = createList();
// 输出单链表
printf("The linked list is:\n");
printList(head);
return 0;
}
```
接下来是将输入的数据逆序建立单链表并输出的代码:
```c
// 将单链表逆序
ListNode* reverseList(ListNode* head) {
if (head == NULL || head->next == NULL) {
return head;
}
ListNode *prev = NULL, *cur = head, *next = head->next;
while (cur != NULL) {
cur->next = prev;
prev = cur;
cur = next;
if (next != NULL) {
next = next->next;
}
}
return prev;
}
int main() {
// 读入数据并建立单链表
printf("Please input integers separated by spaces, end with a non-positive integer:\n");
ListNode *head = createList();
// 输出单链表
printf("The linked list is:\n");
printList(head);
// 将单链表逆序
head = reverseList(head);
// 输出逆序后的单链表
printf("The reversed linked list is:\n");
printList(head);
return 0;
}
```
希望这个回答能够帮到你!