Java实现单链表的排序
来源:互联网 发布:淘宝夜鹰 编辑:程序博客网 时间:2024/06/10 10:31
要想实现链表的排序,使用双重循环,类似于选择排序。
外重循环从头结点循环到尾节点,内重循环从外重循环的节点循环到尾节点,内重循环每个节点的值
与外重循环的节点值进行判断,如果值比外重循环的值小,就交换之。
相当与每次循环把最小的值放到前面。
下面放上代码:
/** * 链表的结构 * @author haoge */public class Node { //链表节点的数据 int data; //链表指向的下一个节点的指针 Node next = null; public Node(int data) { this.data = data; }}/** * 排序链表 * @author haoge */public class SortNodeList { /** * 对链表进行排序:从小到大 * @param head * @return */ public Node sortList(Node head) { //记录每次循环的最小值 int temp ; Node curNode = head; while (curNode != null) { /** * 内重循环从当前节点的下一个节点循环到尾节点, * 找到和外重循环的值比较最小的那个,然后与外重循环进行交换 */ Node nextNode = curNode.next; while (nextNode != null) { //比外重循环的小值放到前面 if (nextNode.data < curNode.data) { temp = nextNode.data; nextNode.data = curNode.data; curNode.data = temp; } nextNode = nextNode.next; } curNode = curNode.next; } return head; } /** * 新增节点 * @param data */ public Node insertNode(int data, Node head) { Node node = new Node(data); if (head == null) { head = node; return head; } Node curNode = head; //循环找到当前链表的尾节点 while (curNode.next != null) { curNode = curNode.next; } //尾节点的指针指向新增加的节点 curNode.next = node; return head; } /** * 打印链表 */ public void printList(Node head) { Node curNode = head; //循环遍历到尾节点 while (curNode != null) { System.out.print(curNode.data + " "); curNode = curNode.next; } System.out.println(); } public static void main(String[] args) { SortNodeList sortNode = new SortNodeList(); //链表的头指针 Node head = null; //新增节点,第一次新增时需要返回头指针,用于定位链表 head = sortNode.insertNode(2, head); sortNode.insertNode(5, head); sortNode.insertNode(4, head); sortNode.insertNode(3, head); sortNode.insertNode(1, head); System.out.println("排序链表前:"); sortNode.printList(head); //排序链表 head = sortNode.sortList(head); System.out.println("排序链表后:"); sortNode.printList(head); }}
输出结果:
排序链表前:2 5 4 3 1 排序链表后:1 2 3 4 5
阅读全文
0 0
- Java实现单链表的排序
- 排序的Java实现
- 排序的Java实现
- [排序算法]--快速排序的Java实现
- [排序算法]--归并排序的Java实现
- [排序算法]--桶排序的Java实现
- 排序算法的java实现-冒泡排序
- 排序算法的java实现-归并排序
- 气泡排序的java实现
- 起泡排序的Java实现
- 快速排序的JAVA实现
- java实现的选择排序
- java实现的归并排序
- java实现的冒泡排序
- 快速排序的Java实现
- java的排序算法实现
- java实现对象的排序
- 快速排序的java实现
- Java邮件开发前期准备之DOS下用SMTP发送邮件测试
- linux系统编程-read()write()函数分析
- html5以及jQuery实现本地图片上传前的预览
- 局部指针变量为什么可以正确返回?
- 排序(二)
- Java实现单链表的排序
- javascript学习(十六)— 浏览器对象
- linux安装mysql
- spark-submit运行jar包脚本命令
- (16)视图(view)
- 浮动元素引起的问题和解决方法
- markdow-文档中图片居中
- 杭电acm 1305Immediate Decodability(字典树)
- Java 开发基于Zookeeper,Spring,vue.js的高并发多用户模块化微信商城系统(四) Java微框架Spring Boot的应用