[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出来一些东西! 虽然还很简陋粗糙,但是靠着自己一个字符一个字符地试出来,相当有成就感。
都懒得写日记来记录,可见内心底对旅行是多么的淡漠。