链表逆序 java_链表逆序(JAVA实现)
题目:将一个有链表头的单向单链表逆序
分析:
链表为空或只有一个元素直接返回;
设置两个前后相邻的指针p,q,使得p指向的节点为q指向的节点的后继;
重复步骤2,直到q为空;
调整链表头和链表尾;
图解:
以链表A->B->C->D为例,逆序此链表。
0.初始状态 1.2.3 循环部分
p = head->next; while(q!=null){
q = head->next->next; t = q->next;
t = null; q->next = p;
p = q;
q = t;
}
0.初始状态
1.第一次循环
2.第二次循环
3.第三次循环
4.q==null循环结束
head->next->next = null;//设置链表尾
head-next = p;//修改链表头
实现及测试代码
节点Node类:
packagelinkList.reverse;/*** 链表节点
*@authorAdministrator
**/
public classNode {private Integer data;//节点数据域
private Node next;//节点指针域
publicInteger getData() {returndata;
}public voidsetData(Integer data) {this.data =data;
}publicNode getNext() {returnnext;
}public voidsetNext(Node next) {this.next =next;
}
}
逆序方法:
/***
*@paramnode 原始链表头节点
*@return逆序后链表头节点*/Node reverseList(Node head){//如果链表为空或只有一个元素直接返回
if(head.getNext()==null||head.getNext().getNext()==null){returnhead;
}
Node p=head.getNext();
Node q=head.getNext().getNext();
Node t= null;while(q!=null){
t=q.getNext();
q.setNext(p);
p=q;
q=t;
}//设置链表尾
head.getNext().setNext(null);//修改链表头
head.setNext(p);returnhead;
}
测试代码:
//表头
Node head = newNode();
head.setData(-1);
head.setNext(null);//定义指针
Node p;
p=head;//初始化链表数据[1~10]
for(int i=1;i<=10;i++){
Node q= newNode();
q.setData(i);
q.setNext(null);
p.setNext(q);
p=q;
}//输出原始链表
printList(head);
System.out.println("");//输出逆序后的链表
printList(reverseList(head));
链表逆序 java_链表逆序(JAVA实现)相关推荐
- 数据结构_Java_基于 线性表-单链表的初始化、逆序、去重、非递减序列的合并(开辟新链表先整体插入一个链表全部元素,再遍历另外一个链表寻找合适位置插入 、开辟新链表实现舍弃原链表)等操作实现
写在前面 不久前学习了数据结构线性表-数组-链表的相关知识,用C/C++语言实现了 单链表的系列相关操作 .见往期博客: 数据结构实验2_C语言_基于顺序表的非递减有序表的合并.线性表元素的增.删.改 ...
- 单链表逆序生成及逆置的完整实现
单链表逆序生成及逆置的完整实现 本例中单链表数据类型定义成int型,可更改 头文件1(1.h) 宏定义及Status类型定义 头文件2(2.h) 单链表基本操作函数与逆置函数 include" ...
- SDUT _2117 数据结构实验之链表二:逆序建立链表
点击打开链接 数据结构实验之链表二:逆序建立链表 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem D ...
- 恢复博客更新 --- 逆序单项链表 要求空间复杂度o(1) 时间复杂度o(n)
转眼已经2016年3月1日了,前一阵子忙了很多事,包括下决心换了工作,也算是正式进了互联网行业.现在后头想想,人必须趁着有时间有精力时多折腾,毕竟人生短短几十年,如果不折腾以后肯定会后悔. 今天开始恢 ...
- 每天一道LeetCode-----将链表每k个节点逆序一次
Swap Nodes in Pairs 原题链接 Swap Nodes in Pairs 意思是将链表每两个节点互换位置,要求不能直接改变链表的值,只能改变next指针的方式交换 其实就是遍历一遍每两 ...
- 【链表】逆序打印链表
1 public class Main { 2 3 // 逆序打印链表 4 public void reversePrint(Node node) { 5 if (node == null){ 6 r ...
- 【C语言】单向链表排序、合并、逆序、分离(链表的头节点不储存数据)
一.排序 编写程序,在第1题(第1题:编写程序,建立2个带头结点单链表,输入若干整数将正整数插入第1个单链表,将负整数插入第2个单链表,插入前和插入后单链表保持递增或相等次序,显示2个单链表,最后销毁 ...
- python单向链表逆序_链表逆序-Python实现
题目描述: 给定一个带头节点的单链表,将其逆序.即如果单链表原来为head->1->2->3->4->5->6->7,那么逆序后变为head->7-&g ...
- python单链表逆序_python链表倒序
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python 实现双向链表(图解)----双向链表双向链表也叫双链表,是链表的一 ...
最新文章
- 深度学习渐趋冷静,为何图形计算却逆势反涨?
- redis基础之有序集合应用
- 【SpringCloud】Feigin-实例
- 数据的预处理与特征构建(申请评分卡模型)
- 自动控制matlab实验,自动控制matlab实验.doc
- Five bugs in five minutes...
- 探索适用于Apache Spark的Spline Data Tracker和可视化工具(第2部分)
- .sh文件是什么语言_关于Linux文件的一些基本命令和知识:
- Part2--排序算法类模板
- Pentest Wiki Part6 权限维持
- matlab 实现批量修改文件后缀名 案例
- 基于知识图谱和图卷积神经网络的应用——学习笔记
- 面试官:Redis中哈希分布不均匀该怎么办
- DM达梦数据库存储过程和触发器
- 初学graphiql 查询操作
- 对网易云音乐参数(params,encSecKey)的分析
- 抽象函数(Java)
- 标品怎样开直通车?标品开直通车的步骤是什么?标品怎样开直通车能获得高转化?
- 学生成绩排名及管理系统c语言,学生成绩管理系统__C语言版.doc
- 豆瓣8.0!烂番茄99%鲜!苹果高分冲奥动画《狼行者》精彩幕后来了!