题目
定义单链表节点结构体,使用头插法(Head Insertion)依次读入 n 个整数建立单向链表,并顺序遍历输出链表中各节点的值。
输入格式:第一行输入节点数量 n;第二行输入 n 个整数。
输出格式:按链表当前从头到尾的顺序输出各节点数据,末尾换行。
数据范围与约定:1 ≤ n ≤ 100。
思路与算法
1. 链表节点内存动态分配
为每个新节点调用 new(sizeof(struct Node)) 申请堆内存。
2. 头插法指针重连
核心操作:node->next = head; head = node;。新节点始终插入在表头位置,因此最终遍历出来的顺序恰好是输入的逆序。
3. 内存释放习惯
程序结束前应顺着指针释放每个动态分配的节点,养成防止内存泄漏的规范。
完整程序
import java.util.Scanner;
class Node {
int val;
Node next;
public Node(int val) {
this.val = val;
}
}
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
Node head = null;
// 头插法构建单向链表
for (int i = 0; i < n; i++) {
int v = sc.nextInt();
Node node = new Node(v);
node.next = head;
head = node;
}
// 顺序遍历链表节点
Node cur = head;
while (cur != null) {
System.out.print(cur.val + (cur.next != null ? " " : "\n"));
cur = cur.next;
}
}
}运行示例
输入:
3
1 2 3输出:
3 2 1