链表连接原理
需要定义两个空间,第一个空间存值,第二个空间存下一个链表的地址。
代码解析
定义链表
/**
* 当前节点类,在堆内存当中创建节点
*/
public class ListNode {
public int value; // 数据域
public ListNode next; // 下一个节点的地址域
public ListNode(int value){
this.value = value;
}
}
链表管理(插入与输出)
ListNode head = null:
当链表第一个值插入时执行
if (head == null){
head = listNode;
return;
}
把地址附到head然后结束。
尾插后续值(需要定义指针)
ListNode tempNode = head;
while (tempNode.next !=null){
tempNode = tempNode.next;
}
tempNode.next = listNode;
定义一个指针默认指向"头",然后遍历链表
当tempNode.next !=null时把tempNode.next赋给tempNode
当tempNode.next ==null时把tempNode.next = listNode;然后结束
头插法解析
ListNode headNode = new ListNode(value);
headNode.next = head;
head = headNode;
取值解析
定义右边指向链表当中的第一个节点
ListNode tempNode = head;
然后遍历链表
while (tempNode !=null){
System.out.println(tempNode.value);
tempNode = tempNode.next;
}
}
当tempNode !=null输出tempNode的值
tempNode = tempNode.next;
当为最后一个值时把null赋给tempNode
输出链表长度解析
和输出链表一样定义指针遍历链表,并定义一个从零开始的变量,把输出值的位置变成定义的变量自增一,最后输出变量即可
int count = 0;
ListNode tempNode = head;
while (tempNode != null) {
count++;
tempNode = tempNode.next;
}
System.out.println(count);
完整代码
/**
* 当前节点类,在堆内存当中创建节点
*/
public class ListNode {
public int value; // 数据域
public ListNode next; // 下一个节点的地址域
public ListNode(int value){
this.value = value;
}
}
//链表的管理类
public class LinkList {
ListNode head = null;
//写一个方法,创建链表,链表的插入方法
//尾插法
public void insert(int value){
ListNode listNode = new ListNode(value);
if (head == null){
head = listNode;
return;
}
ListNode tempNode = head;
while (tempNode.next !=null){
tempNode = tempNode.next;
}
tempNode.next = listNode;
}
//头插法
public void headInsert(int value) {
ListNode headNode = new ListNode(value);
headNode.next = head;
head = headNode;
}
// 输出链表的值
public void printLink(){
//定义右边指向链表当中的第一个节点
ListNode tempNode = head;
while (tempNode !=null){
System.out.println(tempNode.value);
tempNode = tempNode.next;
}
}
// 输出当前链表长度
public void getLength() {
int count = 0;
ListNode tempNode = head;
while (tempNode != null) {
count++;
tempNode = tempNode.next;
}
System.out.println(count);
}
}
public class Main {
public static void main(String[] args) {
LinkList linkList = new LinkList();
linkList.insert(5);
linkList.insert(7);
linkList.insert(8);
linkList.insert(9);
linkList.printLink();
}
}
输出结果