单链表
头插法创建单链表、遍历链表、删除链表作者 伍建全
单位 重庆科技学院
输入一系列自然数(0和正整数),输入-1时表示输入结束。按照输入的顺序,用头插法建立单链表,并遍历所建立的单链表,输出这些数据。注意 -1 不加入链表。
输入格式:
第一行是一个正整数k,表示以下会有k组测试数据。
每组测试数据是一系列以空格隔开的自然数(0和正整数)。数列末尾的 -1 表示本组测试数据结束。按照输入的顺序,用头插法建立单链表,并遍历所建立的单链表,输出这些数据。注意 -1 不加入链表。
输出格式:
对于每组测试数据,输出链表中各节点的数据域。每个数据后有一个空格。每组测试数据的输出占1行。
输入样例:
3
1 2 3 4 5 -1
30 20 10 -1
4 2 2 1 1 2 0 2 -1
输出样例:
在这里给出相应的输出。例如:
5 4 3 2 1
10 20 30
2 0 2 1 1 2 2 4
注意:对每组测试数据,创建链表,遍历链表输出之后,一定要删除链表,否则会出现“内存超限”。
--------------------------------------------------------------------------------------------------------------------------------------
各位大哥怎么写
参考参考吧,HeadInsertTest.java 文件:
import java.util.Scanner;
/**
* 链表节点类
*/
class LNode {
public int val;
public LNode next;
public LNode(int val){
this.val = val;
}
}
/**
* 测试类,以及头插法创建链表、打印输出链表方法的实现
*/
public class HeadInsertTest {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int count = scan.nextInt();
scan.nextLine();
String[][] sVal = new String[];
for (int i = 0; i < count; i++){
sVal = scan.nextLine().split(" ");
}
for (int i = 0; i < count; i++){
LNode head = headInsertCreateLinkedList(sVal);
printLinkedList(head);
System.out.println();
}
}
/**
* 该方法接收一个整数字符串值数组,用头插法创建链表
* @param sNode
* @return
*/
public static LNode headInsertCreateLinkedList(String[] sNode){
if (sNode == null || sNode.length <= 1){
return null;
}
LNode dummy = new LNode(-1);
LNode node = new LNode(Integer.parseInt(sNode));
dummy.next = node;
for (int i = 1; i < sNode.length; i++){
if ("-1".equals(sNode)){
return dummy.next;
}
node = new LNode(Integer.parseInt(sNode));
node.next = dummy.next;
dummy.next = node;
}
return dummy.next;
}
/**
* 该方法接收一个链表头节点,进行链表打印输出
* @param head
*/
public static void printLinkedList(LNode head){
while (head != null){
System.out.print(head.val + " ");
head = head.next;
}
}
} 本帖最后由 傻眼貓咪 于 2022-4-26 10:58 编辑
. 你写的代码呢?
你写了多少?
不是一点也没写吧?
我比较好奇的是这个题目是 java 还是 C?java 需要删除列表?内存超限?
页:
[1]