简单实现带有头结点的单链表以及操作链表的基本方法
package 链表;
public class SingleLinkedListDemo {
public static void main(String[] args) {
SingleLinkedList singleLinkedList = new SingleLinkedList();
singleLinkedList.add(2);
singleLinkedList.add(3);
singleLinkedList.add(1, 1);
singleLinkedList.show();
System.out.println("=========================");
singleLinkedList.add(5, 3);
singleLinkedList.add(4, 123);
singleLinkedList.show();
System.out.println("=========================");
singleLinkedList.update(0, 3);
singleLinkedList.show();
System.out.println("=========================");
singleLinkedList.delete(3);
singleLinkedList.show();
System.out.println("=========================");
}
}
class SingleLinkedList {
//初始化头结点,头结点val存放列表长度
private final SingleLinkedListNode headNode = new SingleLinkedListNode(0);
public void add(int val) {
SingleLinkedListNode temp = headNode;
while (temp.nextNode != null)
temp = temp.nextNode;
temp.nextNode = new SingleLinkedListNode(val);
//插入节点后,链表长度+1
headNode.val++;
}
public void add(int val, int loc) {
SingleLinkedListNode temp = headNode;
for (int i = 1; i < loc; i++) {
if (temp.nextNode == null)
break;
temp = temp.nextNode;
}
SingleLinkedListNode newNode = new SingleLinkedListNode(val);
newNode.nextNode = temp.nextNode;
temp.nextNode = newNode;
headNode.val++;
}
public void delete(int loc) {
if (loc > headNode.val)
throw new RuntimeException("超出链表长度");
SingleLinkedListNode temp = headNode;
for (int i = 1; i < loc; i++)
temp = temp.nextNode;
temp.nextNode = temp.nextNode.nextNode;
headNode.val--;
}
public void update(int val, int loc) {
if (loc > headNode.val)
throw new RuntimeException("超出链表长度");
SingleLinkedListNode temp = headNode.nextNode;
for (int i = 1; i < loc; i++)
temp = temp.nextNode;
temp.val = val;
}
public void show() {
if (headNode.nextNode == null) {
System.out.println("链表为空!");
return;
}
SingleLinkedListNode temp = headNode.nextNode;
while (temp != null) {
System.out.print(temp.val + " ");
temp = temp.nextNode;
}
System.out.println();
}
}
class SingleLinkedListNode {
public int val;
public SingleLinkedListNode nextNode;
public SingleLinkedListNode(int val) {
this.val = val;
this.nextNode = null;
}
@Override
public String toString() {
return "SingleLinkedListNode{" +
"val=" + val +
", nextNode=" + nextNode +
'}';
}
}



