首先,定义单个节点的数据结构
public class Node {
Object data;
Node next;
public Node(Object data) {
this.data = data;
}
}
java实现单链表的添加节点,插入节点,删除节点,以及遍历
public class MyLinkList {
private Node head = new Node("这是头节点");
//插入节点
public void insert(int i, Node node) {
if(i < 1 || i > length() + 1) {
throw new RuntimeException("插入位置不合法");
}
int position = 1;//记录指针的位置
Node tempNode = head;
//在i位置插入,我们需要找到第i-1位置处的节点
while(position < i) {
tempNode = tempNode.next;
position++;
}
node.next = tempNode.next;
tempNode.next = node;
}
//删除某一位置节点
public void delete(int i) {
if(i < 1 || i > length() + 1) {
throw new RuntimeException("删除位置不合法");
}
int position = 1;//记录指针的位置
Node tempNode = head;
//在i位置插入,我们需要找到第i-1位置处的节点
while(position < i) {
tempNode = tempNode.next;
position++;
}
tempNode.next = tempNode.next.next;
}
//添加节点
public void add(Node node) {
Node tempNode = head;
while(tempNode.next != null) {
tempNode = tempNode.next;
}
tempNode.next = node;
}
//获取链表的长度
public int length() {
Node firstNode = head.next;
int count = 0;
if(firstNode == null) {
return 0;
}else {
while(firstNode.next != null) {
firstNode = firstNode.next;
count++;
}
return count;
}
}
//遍历节点
public void forEach() {
Node firstNode = head.next;
while(firstNode != null) {
System.out.printf("%s ",firstNode.data);
firstNode = firstNode.next;
}
}
public static void main(String[] args) {
MyLinkList myLinkList = new MyLinkList();
myLinkList.add(new Node(1));
myLinkList.add(new Node("2"));
myLinkList.add(new Node("ss"));
myLinkList.add(new Node(4));
myLinkList.add(new Node(5));
myLinkList.forEach();
System.out.println();
myLinkList.insert(1, new Node("dd"));
myLinkList.forEach();
System.out.println();
myLinkList.insert(6, new Node("6"));
myLinkList.forEach();
System.out.println();
myLinkList.delete(1);
myLinkList.forEach();
}
}
单链表相关排序