从键盘上依次输入21、18、30、75、42、56,逆序创建单链表,并输出单链表中的各元素值。并加注释
时间: 2024-10-15 15:15:36 浏览: 40
当然,首先我们需要创建一个单链表节点类(Node),然后定义一个逆序插入节点的方法,并提供一个主函数来获取用户输入并遍历打印链表。
```java
// 定义链表节点类
public class ListNode {
int val; // 节点的整数值
ListNode next; // 指向下一个节点的引用
// 构造函数
public ListNode(int val) {
this.val = val;
this.next = null;
}
}
// 定义链表逆序插入节点的方法
public ListNode insertInReverse(ListNode head, int val) {
if (head == null || head.val >= val) { // 如果链表为空或当前节点值大于新值,则直接插入
ListNode newNode = new ListNode(val);
newNode.next = head;
return newNode;
} else { // 否则找到合适的位置插入
ListNode newNode = insertInReverse(head.next, val); // 递归调用,直到找到正确位置
newNode.next = head; // 插入后将原头节点指向新的头节点
return newNode;
}
}
// 主函数,接受用户输入并创建逆序链表
public void printReversedLinkedList() {
Scanner scanner = new Scanner(System.in);
ListNode head = null;
System.out.println("请输入一系列数字:");
while (scanner.hasNextInt()) {
int num = scanner.nextInt();
head = insertInReverse(head, num);
}
// 打印逆序链表
ListNode currentNode = head;
while (currentNode != null) {
System.out.print(currentNode.val + " "); // 输出节点值
currentNode = currentNode.next; // 移动到下一个节点
}
System.out.println(); // 结尾换行
scanner.close();
}
// 初始化并运行主函数
public static void main(String[] args) {
ReversedListExample example = new ReversedListExample();
example.printReversedLinkedList();
}
```
阅读全文