单链表逆置的实现
来源:互联网 发布:现在最流行的网络词语 编辑:程序博客网 时间:2024/06/01 08:47
单链表逆置,就是将节点a1,a2…an转变成an,an-1…a1,并且要求使用原来链表的空间,空间复杂度要求为O(1)。
逆置单链表至少需要两个辅助节点p,q,并且利用头结点head。p用来遍历单链表,q用来记录当前节点,head记录前一节点。通过这三个节点,就能实现单链表的逆置。
p与q在每次循环前应指向同一节点,head指向p,q的前一节点。
代码如下:
public Node verse (Node head){ Node p = null; Node q = null;//将p,q设为同一节点 p = head.getnext(); if(p==null) { return head; } q = p;//将head初始化为空 head = null; while(p!=null) {//通过p节点遍历链表 p = p.getnext();//q节点把当前节点的后置节点设为自己前一个节点 q.setnext(head);//head后移一个节点 head = q;//q后移一个节点 q = p; } Node newhead = new Node(); newhead.setnext(head);//返回一个新的head值,如果单链表为一个节点,返回原head,如果为2个或2个以上的节点,返回逆置以后的头结点。 return newhead;}
单链表逆置的关键点在于
p用来遍历单链表,q用来记录当前节点,head记录前一节点。
p用来遍历单链表,q用来记录当前节点,head记录前一节点。
p用来遍历单链表,q用来记录当前节点,head记录前一节点。
p与q在每次循环前应指向同一节点,head指向p,q的前一节点。
p与q在每次循环前应指向同一节点,head指向p,q的前一节点。
p与q在每次循环前应指向同一节点,head指向p,q的前一节点。
重要的事情说三遍!~~
0 0
- 单链表逆置的实现
- 三子棋的实现的实现的实现
- 单链表逆置的完整实现 java版
- JAVA实现的时钟实现
- 模态框的的实现
- 杀毒软件的简单实现的简单实现
- android的实现电话号码的实现
- 音频的实现音乐声音的实现
- malloc的实现、内存池的实现
- 异形窗体的实现
- 个性化的分页实现
- ASP数据库连接的实现
- Struts单选框的实现
- 梅西迭代算法的实现
- 翻页功能的实现
- Struts,MVC 的实现
- 实现JavaScript的继承
- 接口的显示实现
- 第六届-蓝桥杯省赛-生命之树
- 分析Linux内核创建一个新进程的过程
- intellij idea 基础配置指导
- Add Two Numbers
- .NET在后置代码中输入JS提示语句(背景不会变白)
- 单链表逆置的实现
- 模式之--抽象工厂(Abstract Factory)未完
- 转载 http://drops.wooyun.org/tips/5462?utm_source=tuicool 看来基本算法还是有地方可用
- CoreText实现图文混排
- 不允许创建临时变量,交换两个数的内容(用异或实现)
- 渣校ACM历程——番外之蓝桥杯
- PAT 1096. Consecutive Factors (20)
- Asp.net核心对象
- AAPT使用小结