大大的拳头 发表于 2022-4-26 10:17:53

单链表

头插法创建单链表、遍历链表、删除链表

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

Twilight6 发表于 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[];
      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:50:39

本帖最后由 傻眼貓咪 于 2022-4-26 10:58 编辑

.

人造人 发表于 2022-4-26 11:30:02

你写的代码呢?
你写了多少?
不是一点也没写吧?

傻眼貓咪 发表于 2022-4-26 13:00:47

我比较好奇的是这个题目是 java 还是 C?java 需要删除列表?内存超限?
页: [1]
查看完整版本: 单链表