链表(Linked list)是一种线性表,是一种常见的基础数据结构。
概念不在赘述。
1.创建一个链表对象:
public class ListNode { int val; //节点数据 ListNode next; //下一个节点的引用地址 ListNode(){} ListNode(int val){ this.val=val; } ListNode(int val,ListNode next){ this.val = val; this.next = next; } }
2.链表插入(头插法,尾插法,中间插法) 和 遍历
public class ListNodeServiceImpl { //定义一个头结点 private ListNode head; /** *增加节点,链尾插入 */ public ListNode addListNode(int val) { ListNode node = new ListNode(val);//创建一个新的节点 if (head == null) { head = node;//头结点为null,新节点赋值给头结点 return node; } ListNode temp = head;//头结点赋值给临时节点。 while (temp.next != null) { temp = temp.next; } temp.next = node; return node; } /** * 打印所有节点 */ public void printNodeList() { ListNode temp = head; while (temp != null) { System.out.println("节点数据:" + temp.val); temp = temp.next; } } public static void main(String[] args) { ListNodeServiceImpl listNodeService = new ListNodeServiceImpl(); listNodeService.addListNode(1); listNodeService.addListNode(2); listNodeService.addListNode(3); listNodeService.addListNode(14); listNodeService.printNodeList(); } }
注意:我当时想为什么不直接用head,干嘛还要引入临时节点呐?
如果直接用head ,在遍历或者next时候,前面节点就丢失了。当赋值给temp时候,让temp代替head去next下一个节点,head不变。这样head节点不会丢失。(可能比较笨,记录下。当时没想明白(#^.^#))