Java数据结构与算法|Java学习手册((数据结构与算法-链表)如何实现单链表排序())

以下代码通过插入排序实现了对链表的排序。

/* * 如何实现单链表的排序? *///定义结点类存储结点信息 class Node{ Node next = null; int data; public Node(int data) { this.data = https://www.it610.com/article/data; } }public class LinkedList { Node head = null; //链表头的引用 /** * 向链表中插入数据(末尾依次增加) * @param d:插入数据的内容 */ public void addNode(int d) { Node newNode = new Node(d); if(head == null) {//链表为空 head = newNode; return; } Node temp = head; while(temp.next != null) { temp = temp.next; } //在链表末尾插入元素 temp.next = newNode; } /** * 对链表进行排序,返回排序后的头结点 */ public Node orderList() { Node nextNode = null; int temp = 0; Node curNode = head; //插入排序 while(curNode.next != null) { nextNode = curNode.next; while(nextNode != null) { //由小到大排序 if(curNode.data> nextNode.data) { temp = curNode.data; curNode.data = https://www.it610.com/article/nextNode.data; nextNode.data = temp; } nextNode = nextNode.next; } curNode = curNode.next; } return head; } /** * 输出当前链表的数据 */ public void printList() { Node temp = head; while(temp != null) { System.out.println(temp.data); temp = temp.next; } } public static void main(String[] args) { LinkedList list = new LinkedList(); list.addNode(1); list.addNode(3); list.addNode(5); list.addNode(2); list.addNode(4); System.out.println("排序前:"); list.printList(); list.orderList(); System.out.println("排序后:"); list.printList(); } }

程序输出结果如下:
【Java数据结构与算法|Java学习手册((数据结构与算法-链表)如何实现单链表排序())】排序前:
1
3
5
2
4
排序后:
1
2
3
4
5

    推荐阅读