逆向输出单向链表

既然是单向链表,所以不可避免的一定是从前向后遍历。逆向输出的过程,可以看做是“找下一个”的重复操作,直到下一个是null。所以一定可以用递归来解决。
当然如果利用栈来解决也是可以的。

public static void ReverseOutput(LinkedNode head){
if(head == null)
return;
if(head.next == null)
System.out.print(head.data+" ");
else{
ReverseOutput(head.next);
System.out.print(head.data+" ");
}
}
实现单向链表逆序输出有两种常见思路,一是直接将链表逆序,二是不改变链表结构而逆向打印链表。 ### 直接将链表逆序 以下是一个完整的C++代码示例,用于实现单向链表的逆序: ```cpp #include <iostream> // 定义链表节点结构体 typedef struct listnode { int data; struct listnode* next; } listnode, *list; // 逆序链表函数 list reverseList(list head) { list prev = nullptr; list curr = head; list next = nullptr; while (curr != nullptr) { next = curr->next; curr->next = prev; prev = curr; curr = next; } return prev; } // 打印链表函数 void printList(list head) { list temp = head; while (temp != nullptr) { std::cout << temp->data << " "; temp = temp->next; } std::cout << std::endl; } int main() { // 创建一个简单的链表: 1->2->3->4->5 listnode node5 = {5, nullptr}; listnode node4 = {4, &node5}; listnode node3 = {3, &node4}; listnode node2 = {2, &node3}; listnode node1 = {1, &node2}; list head = &node1; std::cout << "Original list: "; printList(head); head = reverseList(head); std::cout << "Reversed list: "; printList(head); return 0; } ``` 该代码首先定义了链表节点的结构体`listnode`,然后实现了`reverseList`函数用于逆序链表。在`reverseList`函数中,使用三个指针`prev`、`curr`和`next`来遍历链表并改变节点的指向。最后,在`main`函数中创建一个简单的链表,调用`reverseList`函数进行逆序,并打印出逆序前后的链表内容。 ### 不改变链表结构逆向打印 以下是使用递归方法逆向打印链表的代码示例: ```cpp #include <iostream> // 定义链表节点结构体 typedef struct listnode { int data; struct listnode* next; } listnode, *list; // 逆向打印链表函数 void reversePrint(list head) { if (head == nullptr) { return; } reversePrint(head->next); std::cout << head->data << " "; } // 打印链表函数 void printList(list head) { list temp = head; while (temp != nullptr) { std::cout << temp->data << " "; temp = temp->next; } std::cout << std::endl; } int main() { // 创建一个简单的链表: 1->2->3->4->5 listnode node5 = {5, nullptr}; listnode node4 = {4, &node5}; listnode node3 = {3, &node4}; listnode node2 = {2, &node3}; listnode node1 = {1, &node2}; list head = &node1; std::cout << "Original list: "; printList(head); std::cout << "Reversed print: "; reversePrint(head); std::cout << std::endl; return 0; } ``` 此代码定义了`reversePrint`函数,该函数使用递归的方式先访问链表的后续节点,再打印当前节点的值,从而实现逆向打印链表的效果,且不会改变链表的原有结构。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值