[JAVA]简单链表实现,功能:增、删、取值、长度;附测试代码

[JAVA]简单链表实现,功能:增、删、取值、长度;附测试代码代码说明JavaSE 简单链表实现,含完整源码附测试代码包含功能: 获取链表长度; 取出单个节点的值; 增加一个新的节点; 删除一个已有节点;当前版本说明: 无法修改起始节点,只能在起始节点后进行操作; 链表存储的数据为整型int; 单向链表;


Java完整源码-简单链表

public class MyNode{    public int value = 1;    public MyNode next = null;    public static void main(String args[]){}    /*Hom many nodes in now NodeList*/    public int size(MyNode firstNode){        int n =1;        MyNode nowNode = firstNode;        while(nowNode.next!=null){            nowNode = nowNode.next;            n++;        }        return n;    }    /*What is the value of the nth node?*/    public int get(MyNode firstNode,int n){        MyNode nowNode = firstNode;        while(n-->1){            nowNode = nowNode.next;        }        int val = nowNode.value;        return val;    }    /*Add a new Node into current nodeList*/    public void add(int n,int val,MyNode firstNode){        // make the new node become the n+1th in the nodelist            MyNode nowNode = firstNode;            n = n-1;            while(n>1){                nowNode = nowNode.next;                n--;            }            //1.create a new Node            MyNode newNode = new MyNode();            //2.give the new Node a new value            newNode.value = val;            //3.             newNode.next = nowNode.next;            //4.            nowNode.next = newNode;            //5.            // nowNode = newNode;    }    /*Remove the nth node*/    public void remove(int n,MyNode firstNode){        MyNode nowNode = firstNode;        n = n-1;        while(n>1){            n--;            nowNode = nowNode.next;        }        MyNode tmpNode = nowNode.next;        nowNode.next = tmpNode.next;    }}

Java完整源码-测试代码

public class MyNodeTest{    public static void main(String args[]){        MyNode m1n = new MyNode();        MyNode m2n = new MyNode();        MyNode m3n = new MyNode();        MyNode m4n = new MyNode();        m1n.value =1;        m2n.value =2;        m3n.value =3;        m4n.value =4;        m1n.next = m2n;        m2n.next = m3n;        m3n.next = m4n;        System.out.println("Size :"+m1n.size(m1n));        System.out.println("Value of the 3rd node :"+m1n.get(m1n,3));        /*Add a new Node 9 after the nth node*/        /*Current can not change the first Node*/        m1n.add(3,9,m1n);        System.out.println("Size plus 9 : "+m1n.size(m1n));        System.out.println(" 1 :"+m1n.get(m1n,1));        System.out.println(" 2 :"+m1n.get(m1n,2));        System.out.println(" 3 :"+m1n.get(m1n,3));        System.out.println(" 4 :"+m1n.get(m1n,4));        System.out.println(" 5 :"+m1n.get(m1n,5));        /*remove a node 9*/        m1n.remove(3,m1n);        System.out.println("Size minus 9 : "+m1n.size(m1n));        System.out.println(" 1 :"+m1n.get(m1n,1));        System.out.println(" 2 :"+m1n.get(m1n,2));        System.out.println(" 3 :"+m1n.get(m1n,3));        System.out.println(" 4 :"+m1n.get(m1n,4));    }}

使用方法

过程中我遇到的问题以及解决方法

任何有关计数的问题,我总是容易出错的,比如说现在需要找到第三个数字,那么到底是计数2次还是计数3次,我容易在判断条件那里是>1还是>0弄错误,这种笨拙有时候还体现在for循环语句里面,我觉得这就是我的弱点,从小时候开始我就不擅长计算1和10中间有多少个数字这种问题,我一直都是靠计算1和3中间有1分数字这种方法来思考1和10中间的数字个数的,因为脑子根本就不够用。索性,coding还是很愉悦的,几种条件都试试就好啦,虽然很多事情想好再去做比较有利,但是coding的话,直接敲起就好了。

各种第一次记

1:第一次使用markdown来编辑csdn的博客,上手简单,适应良好。 2:第一次有那么一瞬,感觉自己似乎理解了“面向对象”OO,吼吼~ 3:第一次有那么一瞬,感觉自己似乎会“编程”programmming了! 4:第一次有那种感觉,自己make出来一些东西! 虽然还很简陋粗糙,但是靠着自己一个字符一个字符地试出来,相当有成就感。

都懒得写日记来记录,可见内心底对旅行是多么的淡漠。

[JAVA]简单链表实现,功能:增、删、取值、长度;附测试代码

相关文章:

你感兴趣的文章:

标签云: