设计一个算法,逆序输出单链表中的所有元素
时间: 2024-06-16 22:08:26 浏览: 15
设计一个算法,逆序输出单链表中的所有元素可以通过以下步骤实现:
1. 定义一个栈数据结构,用于存储链表节点的值。
2. 遍历单链表,将每个节点的值依次压入栈中。
3. 弹出栈中的元素,即可实现逆序输出。
以下是算法的具体实现:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def reversePrint(head):
stack = []
while head:
stack.append(head.val)
head = head.next
result = []
while stack:
result.append(stack.pop())
return result
```
相关问题
对于不带头结点的单链表l,设计一个递归算法逆序输出所有结点值。用数组a[]={1,2,5
以下是递归算法的实现:
```python
class Node:
def __init__(self, val=None, next=None):
self.val = val
self.next = next
def reverse_print(head: Node):
if head is None:
return
reverse_print(head.next)
print(head.val)
# 测试
a = [1, 2, 5]
head = None
for i in range(len(a)-1, -1, -1):
head = Node(a[i], head)
reverse_print(head)
```
运行结果为:
```
5
2
1
```
首先创建一个`Node`类来表示链表节点。然后递归函数`reverse_print`中,先判断当前节点是否为空,如果不为空就递归输出它后面的所有节点,最后输出当前节点的值。这样就可以逆序输出整个链表了。
在测试代码中,先把数组`a`中的元素逆序插入到链表中,再调用`reverse_print`函数输出。
对于不带头结点的单链表L,设计一个递归算法逆序输出所有结点值。用数组a[]={1,2,5,2,3,2}来创建单链表L。
递归算法逆序输出不带头结点的单链表L的步骤如下:
1. 判断当前结点是否为空,如果为空则直接返回。
2. 递归输出当前结点之后的所有结点。
3. 输出当前结点的值。
对于数组a[]={1,2,5,2,3,2}来创建单链表L的过程,可以按照以下步骤进行:
1. 定义一个指向链表头的指针p,并初始化为NULL。
2. 从数组的末尾开始循环,每次创建一个新结点,并将数组元素赋值给该结点的数据域。
3. 将该结点的next指针指向p指针所指向的结点,然后将p指针指向该结点。
4. 循环结束后,p指针指向链表的头结点。
下面是具体的C++代码实现:
```c++
#include <iostream>
using namespace std;
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
void createList(ListNode*& head, int a[], int n) {
head = NULL;
for (int i = n - 1; i >= 0; i--) {
ListNode* p = new ListNode(a[i]);
p->next = head;
head = p;
}
}
void reversePrint(ListNode* head) {
if (head == NULL) return; // 1.
reversePrint(head->next); // 2.
cout << head->val << " "; // 3.
}
int main() {
int a[] = { 1,2,5,2,3,2 };
int n = sizeof(a) / sizeof(int);
ListNode* L;
createList(L, a, n);
reversePrint(L);
return 0;
}
```
输出结果为:`2 3 2 5 2 1`。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![java](https://img-home.csdnimg.cn/images/20210720083646.png)
![text/x-c](https://img-home.csdnimg.cn/images/20210720083646.png)