public class MyLink {
public static void main(String[] args) {
LinkList<Integer> list = new LinkList<Integer>(null);//头结点
list.insert(1, list);
list.insert(2, list);
list.insert(3, list);
list.insert(4, list);
list.insert(5, list);
//list.reverse(list);
//list.delete(list, 5);
list.traverse(list);
}
}
class LinkList<T> {
T data;
LinkList<T> next;
LinkList(T data) {
this.data = data;
}
// 插入一个元素(后插入)
public void insert(T data, LinkList<T> list) {
LinkList<T> newNode = new LinkList<>(data);
LinkList<T> tempNode = list;
while (tempNode.next != null) {
tempNode = tempNode.next;
}
tempNode.next = newNode;
}
// 遍历单链表
public void traverse(LinkList<T> list) {
LinkList<T> tempNode = list.next;
while (tempNode != null) {
System.out.println(tempNode.data);
tempNode = tempNode.next;
}
}
//反转链表
public void reverse(LinkList<T> list) {
LinkList<T> head = list;
LinkList<T> nextNode = head.next;//保留下一个
head.next = null;
while(nextNode != null) {
LinkList<T> temp = nextNode.next;
nextNode.next = head.next;
head.next = nextNode;
nextNode = temp;
}
}
//根据索引删除
public void delete(LinkList<T> list,int index) {
if(index < 1) return;
LinkList<T> head = list;
int i = 1;
while(head != null && i < index) {
i++;
head = head.next;//寻找删除结点前驱
}
LinkList<T> delNode = head.next;
head.next = delNode.next;
delNode.next = null;
}
}