其实java和微软的C#在设计上差不多,C#在设计上应该比java还要高明一点。最近也是一直在看java方面的书和资料,感觉上java其实是另一个作用了云端的更庞大的生态系统,但我这种非计科出身的人,就像机械设计常用的solidworks和creo,感觉不出两者哪个好不好的,但从工业控制上来说,C#应该是好一点的,毕竟配合winform的话,只用关注你的业务逻辑就好了,节省了大量的时间,如果是一;个人操刀并且想快速出活的话,还是首选C#。但这个有什么关系呢,实际上只能是项目的需求选型了什么框架,那你就直接用对应框架上最合适的语言就好了。

还是一样,学习一门新语言,直接过一遍基本语法和字符串,IO,集合常用操作后,直接对常用数据结构进行敲代码,对,就是这样简单粗暴,敲完基础数据结构再看一下JCF对应的源码是怎么实现的。数据结构在上学的时候是没学的,后来是在用自学了C#后买了一本图解数据结构的C#版学会的。后面比较难的AVL、图部分的知识也忘记了,毕竟应用场景少。这方面一直是Ctrl+C和Ctrl+V后修改操作,这次也算是下决心整治一下自己缺失的这一部分。

本次先实现最简单的链表操作,理论上来说,C#和java都是自动GC的语言,所以不能如C++一样操作操作指针字符。不过没关系,在C#中,可以直接使用类模拟对应的链点存储用的节点,可以在java中一样实现。

模拟Node节点



class Node{
     public int data;
     public Node next;
     public Node(int data){
         this.data=data;
         this.next=null;
     }
}



大学的时候其实是选修了C++的,开始在C++中尝试以上代码在C++中是有问题的,因为在C++中,Node next相当Node next=new Node()会无限初始化,但在C#中只是生成了一个4字节的引用,java和C#的性质应该一样的,但就不知道是不是4字节了,有空再找一下资料吧。

初始化链表:



public class LinkedList {
    //生成前后节点指针;
    private Node first;
    private Node last;
    public boolean isEmpty(){
        return first==null;
    }
    public void inset(int data){
        Node newNode=new Node(data);
        if(this.isEmpty()){
            //从头插入
            first=newNode;
            last=newNode;
        }
        else{
            //从后插入
            last.next=newNode;
            last=newNode;
        }
    }
    //必须获得第一个指针完成遍历
    public void print(){
        Node node=first;
        while (node!=null){
            System.out.println(node.data);
            node=node.next;
        }
    }
}



方法的话,是做了非空检查,插入和打印的函数。

做一个Test类:



class LinkedListTest {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader=new BufferedReader(new InputStreamReader((System.in)));
        int data;
        System.out.println("请输入3个整数:");
        LinkedList list=new LinkedList();
        for (int i = 0; i <3; i++) {
            int num=Integer.parseInt(bufferedReader.readLine());
            //将值插入链表中
            list.inset(num);
        }
        //将值打印出来
        list.print();
    }

}



可以获得值




java list 打印 去掉 括号 java如何打印list_java 打印list