话不多说上代码
/**
* 有序链表
*/
public class OrderLinkedList {
// 链表中的节点
private class Node{
private int data;
private Node next;
public Node(int data){
this.data = data;
}
}
private Node head;
private int size;
public OrderLinkedList(){
this.head = null;
this.size = 0;
}
// 插入节点
public int insert(int value){
// 构建新的节点
Node node = new Node(value);
Node pre = null;
Node curr = head;
// 如果 curr 不为 null 说明链表中有节点
// 如果插入的值 大于 当前节点的值则找下一个节点
// 直到找到一个比当前节点小的节点
while (curr != null && value > curr.data){
pre = curr;
curr = curr.next;
}
// 如果走到这里证明要插入的节点已经小于 curr 节点
// pre == null 说明插入的节点已经小于头节点
// 要将出入节点设置到头节点之前
if(pre == null){
// 将新节点指向头节点
head = node;
// 在将头节点的 next 节点指向到 curr 节点
// 走到这里 curr 就代表之前的头节点
// 将新头节点的 next 设置为 jiu的头节点 curr 就是将元素插到了第一位
head.next = curr;
}else{
// 由于 pre 节点的 next 节点本来指向的是 curr 节点
// 但是新插入的节点小于 curr 节点要将新节点 插入到 curr 之前
// 所以这里将 pre 的next 指向 新节点
// 将新节点的 next 指向 curr 节点
pre.next = node;
node.next = curr;
}
size ++;
return value;
}
// 删除头节点
public void deleteHead(){
if(size == 0){
throw new RuntimeException("没有节点信息");
}
head = head.next;
size --;
}
// 打印数据
public void display(){
if(size == 0){
System.out.println("暂无节点数据");
}
Node curr = head;
while (curr != null){
System.out.print(curr.data+" ,");
curr = curr.next;
}
System.out.println();
}
public static void main(String[] args) {
OrderLinkedList orderLinkedList = new OrderLinkedList();
System.out.println("***************** 添加无序节点 *****************");
System.out.print(orderLinkedList.insert(10)+" ,");
System.out.print(orderLinkedList.insert(9)+" ,");
System.out.print(orderLinkedList.insert(53)+" ,");
System.out.print(orderLinkedList.insert(36)+" ,");
System.out.println();
System.out.println("***************** 显示排序后的节点 *****************");
orderLinkedList.display();
System.out.println("***************** 删除头节点 *****************");
orderLinkedList.deleteHead();
orderLinkedList.display();
}
}
结果
***************** 添加无序节点 *****************
10 ,9 ,53 ,36 ,
***************** 显示排序后的节点 *****************
9 ,10 ,36 ,53 ,
***************** 删除头节点 *****************
10 ,36 ,53 ,
网友评论