java编程题:输入若干个不超过100的整数,建立单链表,然后将链表中所有结点的链接方向逆置,要求仍利用原表的存储空间。输出逆置后的单链表。 输入格式: 首先输入一个整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据在一行上输入数据个数n及n个不超过100的整数。 输出格式: 对于每组测试,输出逆置后的单链表,每两个数据之间留一个空格。 输入样例: 1 11 55 50 45 40 35 30 25 20 15 10 5 输出样例: 5 10 15 20 25 30 35 40 45 50 55 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB
时间: 2023-02-06 18:07:58 浏览: 197
下面是一个示例代码:
```java
import java.util.Scanner;
public class Main {
static class Node {
int val;
Node next;
public Node(int val) {
this.val = val;
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
while (t-- > 0) {
int n = sc.nextInt();
Node head = null;
Node tail = null;
for (int i = 0; i < n; i++) {
int val = sc.nextInt();
Node cur = new Node(val);
if (head == null) {
head = cur;
tail = cur;
} else {
tail.next = cur;
tail = cur;
}
}
// 将链表逆置
Node newHead = null;
while (head != null) {
Node next = head.next;
head.next = newHead;
newHead = head;
head = next;
}
// 输出逆置后的链表
for (Node p = newHead; p != null; p = p.next) {
System.out.print(p.val + " ");
}
System.out.println();
}
}
}
```
上面的代码实现了对单链表的逆置操作。
首先,使用一个循环读入输入的数据,并将这些数据插入单链表中。
然后,使用一个循环将链表逆置。每次循环,将当前结点的 next 指针指向新链表的头结点,然后将当前结点设为新链表的头结点,再将 head 指针向后移动一位。
最后,使用另一个循环遍历逆置后的链表,并输出每个结点的值。
阅读全文