鱼C论坛

 找回密码
 立即注册
查看: 2202|回复: 4

[已解决]单链表

[复制链接]
发表于 2022-4-26 10:17:53 | 显示全部楼层 |阅读模式
25鱼币
头插法创建单链表、遍历链表、删除链表

作者 伍建全
单位 重庆科技学院
输入一系列自然数(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
注意:对每组测试数据,创建链表,遍历链表输出之后,一定要删除链表,否则会出现“内存超限”。
--------------------------------------------------------------------------------------------------------------------------------------
各位大哥怎么写
最佳答案
2022-4-26 10:17:54

参考参考吧,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[count][];
        for (int i = 0; i < count; i++){
            sVal[i] = scan.nextLine().split(" ");
        }

        for (int i = 0; i < count; i++){
            LNode head = headInsertCreateLinkedList(sVal[i]);
            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[0]));
        dummy.next = node;
        for (int i = 1; i < sNode.length; i++){
            if ("-1".equals(sNode[i])){
                return dummy.next;
            }
            node = new LNode(Integer.parseInt(sNode[i]));
            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;
        }
    }
}

最佳答案

查看完整内容

参考参考吧,HeadInsertTest.java 文件:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-26 10:17:54 | 显示全部楼层    本楼为最佳答案   

参考参考吧,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[count][];
        for (int i = 0; i < count; i++){
            sVal[i] = scan.nextLine().split(" ");
        }

        for (int i = 0; i < count; i++){
            LNode head = headInsertCreateLinkedList(sVal[i]);
            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[0]));
        dummy.next = node;
        for (int i = 1; i < sNode.length; i++){
            if ("-1".equals(sNode[i])){
                return dummy.next;
            }
            node = new LNode(Integer.parseInt(sNode[i]));
            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;
        }
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-26 10:50:39 From FishC Mobile | 显示全部楼层
本帖最后由 傻眼貓咪 于 2022-4-26 10:58 编辑

.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-26 11:30:02 | 显示全部楼层
你写的代码呢?
你写了多少?
不是一点也没写吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-26 13:00:47 From FishC Mobile | 显示全部楼层
我比较好奇的是这个题目是 java 还是 C?java 需要删除列表?内存超限?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 13:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表