① 最近被链表搞的有点蒙,道理懂,但是在动手敲关于链表的代码的时候,遇到了难题。终于让我搜到了这篇文章,让我突然更懂链表了(达到了能写代码的地步)。
https://m.jb51.net/article/170155.htm?tdsourcetag=s_pcqq_aiomsg
②首先,在java里,链表的每个结点用Node类来表示,结点定义如下:
1 package com.linkedlist; 2 3 public class Node { 4 private int data;// 结点数据 5 private Node next;// 下一个结点 6 7 public Node(int data) { 8 this.data = data; 9 } 10 11 public int getData() { 12 return data; 13 } 14 15 public void setData(int data) { 16 this.data = data; 17 } 18 19 public Node getNext() { 20 return next; 21 } 22 23 public void setNext(Node next) { 24 this.next = next; 25 } 26 }
③然后,定义一个链表操作类,里面包含常用的操作:
package com.linkedlist; import java.util.Hashtable; public class LinkedListOperator { private Node head = null;// 头结点。java里允许这样写:一开始让头结点为空 // 在链表的末尾增加一个结点 private void addNode(int data) { //传入的参数是data Node newNode = new Node(data); //传入了data,该data就被拿到②中4、8、16行进行运用 if (head == null) { head = newNode; return; } Node temp = head; //temp是head的复制体,此后无论temp怎么变都无关head的事情 while (temp.getNext() != null) { //无限循环,直到temp自己已经是尾结点 temp = temp.getNext(); //把temp的下一个结点,赋给temp自己 } temp.setNext(newNode); //经过上述循环,已经保证temp是原链表的尾结点了, } //接上句,让newNode成为temp的下一个结点 //上述就是addNode函数
④ 未完待续,我先睡个午觉