博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
链表操作
阅读量:6006 次
发布时间:2019-06-20

本文共 908 字,大约阅读时间需要 3 分钟。

链表的相关算法中常需要设置哨兵连接到链表的第一个结点,这样就可以不影响第一个结点的删除、交换等操作。

譬如在链表的插入排序中,令node从哨兵结点dummy开始,使用node.next与head进行比较,既保证了从第一个结点开始比较,又在node.next为空或node.next大于head时方便把head插入到node后。

插入排序这段代码中,尤其需要注意链表为空和链表只有单个元素的情形已经包含在内,不需要单独列出来了。

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */public class Solution {    public ListNode insertionSortList(ListNode head) {        ListNode dummy = new ListNode(0);        while (head != null) {            ListNode node = dummy;            while (node.next != null && node.next.val < head.val) {                node = node.next;            }            ListNode temp = head.next;            head.next = node.next;            node.next = head;            head = temp;        }        return dummy.next;    }}

自己写的时候单列出了很多情形,实际上这样简单的一段代码就涵盖了各种情况。

转载于:https://www.cnblogs.com/shinning/p/4953356.html

你可能感兴趣的文章
我的友情链接
查看>>
使用secure CRT的SFTP在LINUX与WINDOWS下交换文件
查看>>
Docker单独设置代理服务
查看>>
移动互联网,入口生死战
查看>>
nginx面试常问题目
查看>>
制作ubuntu系统u盘镜像,以及安装
查看>>
swift3.0layer折叠 淘宝商品View折叠
查看>>
Git忽略文件配置
查看>>
JAVA多线程深度解析
查看>>
Kafka High Level Consumer 会丢失消息
查看>>
时间轴
查看>>
入坑vim之配置文件vimrc
查看>>
java 获取系统当前时间的方法
查看>>
css关于鼠标样式的设置
查看>>
Ubuntu 10.04升级git 到1.7.2或更高的可行方法
查看>>
MyBATIS(即iBATIS)问题集
查看>>
Linux下autoconf和automake使用
查看>>
UDP之socket编程
查看>>
Spring Security4实战与原理分析视频课程( 扩展+自定义)
查看>>
Centos6.5升级系统自带gcc4.4.7到gcc4.8.0
查看>>