从键盘上依次输入 21、18、30、75、42、56,逆序创建单链表,并输出单链表中的各元
时间: 2023-10-20 22:13:44 浏览: 128
素。
好的,这个问题可以回答。以下是代码实现:
```python
class Node:
def __init__(self, val):
self.val = val
self.next = None
def reverselist(head):
if not head or not head.next:
return head
prev = None
curr = head
while curr:
nxt = curr.next
curr.next = prev
prev = curr
curr = nxt
return prev
nums = [21, 18, 30, 75, 42, 56]
head = Node(nums[0])
curr = head
for num in nums[1:]:
curr.next = Node(num)
curr = curr.next
head = reverselist(head)
curr = head
while curr:
print(curr.val)
curr = curr.next
```
输出结果为:
```
56
42
75
30
18
21
```
希望可以帮到你。
相关问题
从键盘上依次输入21、18、30、75、42、56,逆序创建单链表,并输出单链表中的各元素值
为了逆序创建一个单链表,我们需要首先将输入的数字存储在一个数组或列表中,然后按逆序顺序链接这些节点。这里假设我们手动创建链表,可以这样做:
1. 首先,我们定义一个空的头节点:
```java
ListNode<Integer> head = new ListNode<>(null);
ListNode<Integer> tail = head;
```
2. 然后,遍历输入的整数数组,从最后一个元素开始插入节点:
```java
int[] numbers = {21, 18, 30, 75, 42, 56};
for (int i = numbers.length - 1; i >= 0; i--) {
ListNode<Integer> newNode = new ListNode<>(numbers[i]);
tail.setNext(newNode); // 将当前节点的next指向新节点
tail = newNode; // 更新tail指向下个节点
}
```
3. 最后,我们已经创建了一个逆序的链表,可以从头节点开始输出链表中的元素值:
```java
ListNode<Integer> currentNode = head.getNext(); // 开始于第一个非null节点
while (currentNode != null) {
System.out.print(currentNode.getValue() + " "); // 输出节点值
currentNode = currentNode.getNext();
}
```
当你运行这段代码时,输出将是:56 42 75 30 18 21。
从键盘上依次输入21、18、30、75、42、56,逆序创建单链表,并输出单链表中的各元素值。并添加注释
要实现这个功能,我们需要创建一个单链表节点类(Node)和一个链表类(LinkedList),然后按照输入顺序逆序插入节点,最后遍历链表输出每个元素值。以下是Java代码示例:
```java
// 定义链表节点类
class Node {
int data; // 节点数据
Node next; // 指向下个节点
// 构造函数
public Node(int data) {
this.data = data;
this.next = null;
}
}
// 链表类
public class LinkedList {
Node head; // 链表头节点
// 向链表尾部添加新节点
public void add(int data) {
Node newNode = new Node(data);
// 如果链表为空或只有一个节点,直接将其设为头节点
if (head == null || (head.next != null && head.next.next == null)) {
head = newNode;
} else {
Node current = head;
while (current.next != null) {
current = current.next;
}
current.next = newNode;
}
}
// 打印链表中的所有元素
public void printList() {
Node currentNode = head;
while (currentNode != null) {
System.out.print(currentNode.data + " "); // 输出当前节点数据,后面跟空格
currentNode = currentNode.next;
}
System.out.println(); // 结束行
}
}
// 主程序入口
public class Main {
public static void main(String[] args) {
LinkedList list = new LinkedList();
// 用户输入的数据
int[] inputs = {21, 18, 30, 75, 42, 56};
// 逆序输入并添加到链表
for (int i = inputs.length - 1; i >= 0; i--) {
list.add(inputs[i]);
}
// 输出链表中的元素
list.printList();
}
}
```
在这个代码中,`add`方法负责逆序添加节点,因为我们在遍历数组时是从后往前的。`printList`方法则用于打印链表中的所有元素。
阅读全文