Java反转单链表
- class Node {
- private int data;
- private Node nextNode;
- public Node(int data) {
- this.data = data;
- }
- public int getData() {
- return data;
- }
- public void setData(int data) {
- this.data = data;
- }
- public Node getNextNode() {
- return nextNode;
- }
- public void setNextNode(Node nextNode) {
- this.nextNode = nextNode;
- }
- }
- public class ReverseSingleList {
- public static Node reverse(Node head) {
- if (null == head || null == head.getNextNode()) {
- return head;
- }
- Node reversedHead = reverse(head.getNextNode());
- head.getNextNode().setNextNode(head);
- head.setNextNode(null);
- return reversedHead;
- }
- public static Node reverse2(Node head) {
- if (null == head || null == head.getNextNode()) {
- return head;
- }
- Node node1 = head;
- Node node2 = head.getNextNode();
- head.setNextNode(null);
- while (null != node2) {
- node1 = node2;
- node2 = node2.getNextNode();
- node1.setNextNode(head);
- head = node1;
- }
- return head;
- }
- public static void main(String[] args) {
- Node head = new Node(0);
- Node cur = head;
- Node tmp = null;
- // 构造一个长度为10的链表,保存头节点对象head
- for (int i = 1; i < 10; i++) {
- tmp = new Node(i);
- cur.setNextNode(tmp);
- cur = tmp;
- }
- //打印反转前的链表
- Node h = head;
- while (null != h) {
- System.out.print(h.getData() + " ");
- h = h.getNextNode();
- }
- //调用反转方法
- //head = reverse(head);
- head = reverse2(head);
- System.out.println("\n**************************");
- //打印反转后的结果
- while (null != head) {
- System.out.print(head.getData() + " ");
- head = head.getNextNode();
- }
- }
- }
0 1 2 3 4 5 6 7 8 9
**************************
9 8 7 6 5 4 3 2 1 0
Java反转单链表的更多相关文章
- Java反转单链表(code)
主要是面试中可能会经常碰上该类似操作,尤其是稍大点公司,面试官可能并不在乎你能不能搞定该题,但是这类型题目最是能体现程序员的思维状态 ---一个迷糊头脑的程序员 怎能立志改变这个世界 /** * @a ...
- Java实现单链表的各种操作
Java实现单链表的各种操作 主要内容:1.单链表的基本操作 2.删除重复数据 3.找到倒数第k个元素 4.实现链表的反转 5.从尾到头输出链表 6.找到中间节点 7.检测链表是否有环 8.在 ...
- Reverse反转算法+斐波那契数列递归+Reverse反转单链表算法--C++实现
Reverse反转算法 #include <iostream> using namespace std; //交换的函数 void replaced(int &a,int & ...
- java实现单链表的增删功能
JAVA 实现单链表的增删功能 package linked; class LinkedTable{ } public class LinkedTableTest { public static vo ...
- 在O(n) 时间复杂度,O(1)空间复杂度内反转单链表
在LeetCode中看到判断回文的程序:https://leetcode.com/problems/palindrome-linked-list/ 里面用单链表来存储数据,先反转前半部分的单链表,然后 ...
- 以K个为一组反转单链表,最后不足K个节点的部分也反转
package StackMin.ReverseList_offer16; public class ReverseKgroup_extend_offer16 { /** * 分组反转单链表,最后不足 ...
- 【数据结构】单链表介绍及leetcode206题反转单链表python实现
题目传送门:https://leetcode-cn.com/problems/reverse-linked-list/ 文章目录 单链表介绍 链表 概念 种类 优缺点 单链表(slist) leetc ...
- JAVA数据结构——单链表
链表:一. 顺序存储结构虽然是一种很有用的存储结构,但是他有如下几点局限性:1. 因为创造线性表的时候已经固定了空间,所以当需要扩充空间时,就需要重新创建一个地址连续的更大的存储空间.并把原有的数据元 ...
- 使用java实现单链表(转载自:https://www.cnblogs.com/zhongyimeng/p/9945332.html)
使用java实现单链表----(java中的引用就是指针)转载自:https://www.cnblogs.com/zhongyimeng/p/9945332.html ? 1 2 3 4 5 6 7 ...
随机推荐
- 给定一列数字将其平移n位
原题的意思是给定一个指定长度的数组,然后接受一个数字m,将原数组前m位移动到最后,且顺序不变. 看到这个题,想到的第一个方法就是在用一个数组来储存改变后的数字,代码如下 int func(){ int ...
- 计算机编码中的换行 CR与LF
以下的文字为转载,但是有错误的地方,博主自行进行了修正和补充,用红色标示. 原文地址在这里. ------------ 转载起始 ------------- “回车”(Carriage Return) ...
- Bootstrap新版里的a标签点击后出现下划线解决办法
其实我从失去焦点后发现了下划线消失了就应该知道 Bootstrap对a标签进行了 focus焦点事件. 所以解决办法就是一句:a:focus{text-decoration: none}. 一个笑笑的 ...
- 转:趋势科技研究员从漏洞、漏洞利用、Fuzz、利用缓解四个方面总结的一张脑图
- CodeForces 740D Alyona and a tree
倍增,延迟标记. 考虑一个$u$给他的哪几个祖先$v$贡献了$1$.越往上$dis(v,u)$越大,找到最远的一个还满足条件的$v$,$v$到$u$的父亲这条链上的答案都$+1$.延迟标记一下,然后从 ...
- Flask实战第38天:前台模型创建
安装shortuuid pip install shortuuid 编辑front.models.py from exts import db import shortuuid from werkze ...
- 【优先队列+贪心】POJ2431-Expedition
解题方法详见<挑战程序设计竞赛(第二版)>P74-75.注意首先要对加油站以位置为关键字快排,不要遗忘把终点视作一个加油量为0的加油站,否则最终只能到达终点前的加油站. /*优先队列*/ ...
- 20162304 实验二《Java面向对象程序设计》实验报告
20162304 实验二<Java面向对象程序设计>实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 ...
- Perl正则表达式
perl正则表达式就是通过一串特别设计的字符串,可以按照我们的需求匹配.替换.转化目标字符串.本文主要是对一些常用的正则表达以及语法的总结以及举例,供广大喜爱Perl的同学交流学习. 操作符: =~ ...
- Educational Codeforces Round 8 B. New Skateboard 暴力
B. New Skateboard 题目连接: http://www.codeforces.com/contest/628/problem/A Description Max wants to buy ...