电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java實現單鏈表反轉的多種方法總結

瀏覽:8日期:2022-08-14 15:55:08

對于單鏈表不熟悉的可以看一下基于Java實現單鏈表的增刪改查

一、原地反轉

1、新建一個哨兵節點下一結點指向頭結點

2、把待反轉鏈表的下一節點插入到哨兵節點的下一節點

反轉之前的鏈表:1?>2?>3?>4>?>5

加入哨兵節點:dummp?>1?>2?>3?>4>?>5

原地反轉:

定義:prev=dummp.next; pcur=prev.next;

prev.next=pcur.next;

pcur.next=dummp.next;

dummp.next=pcur;

pcur=prev.next;

Java實現單鏈表反轉的多種方法總結

Java實現單鏈表反轉的多種方法總結

public Stu_node reverse_list(Stu_node head){if (head.next==null ||head.next.next==null) return null;Stu_node dump = new Stu_node(-1,' ');dump.next=head;Stu_node prev = dump.next;Stu_node pcur = prev.next;while(pcur!=null){ prev.next=pcur.next; pcur.next=dump.next; dump.next=pcur; pcur=prev.next;}return dump.next; }二、新建鏈表頭結點插法

二、新建鏈表頭結點插法:

新建一個頭結點,遍歷原鏈表,把每個節點用頭結點插入到新建鏈表中。最后,新建的鏈表就是反轉后的鏈表。

Java實現單鏈表反轉的多種方法總結

Java實現單鏈表反轉的多種方法總結

public Stu_node reverse_list1 (Stu_node head){//新建一個新的鏈表的頭結點Stu_node dump = new Stu_node(-1,' ');Stu_node pcur = head;//遍歷待反轉鏈表,頭結點插入到新的鏈表中while(pcur!=null){ Stu_node pnext = pcur.next; pcur.next = dump.next; dump.next=pcur; pcur=pnext;}//新鏈表頭結點不是需要返回的數據,因此返回頭結點的下一節點return dump.next; }三、利用棧結構實現鏈表的反轉

由于棧結構存儲數據是先進后出(后進先出)也可以通過棧達到反轉鏈表的目的。

public Stu_node reverse_stack(Stu_node head){Stack<Stu_node> stack = new Stack<>();Stu_node temp = head;//鏈表入棧while(temp!=null){ stack.push(temp); temp=temp.next;}//取出棧中的一個節點當做新的鏈表的頭結點Stu_node new_head = stack.pop();Stu_node cur = new_head;//出站while(!stack.isEmpty()){ Stu_node node = stack.pop(); //將出站的節點指向取消 node.next=null; //將新的鏈表串起來 cur.next = node; cur = node;}return new_head; }四、完整代碼奉上

import java.util.Stack;public class revere_node { public static void main(String[] args) {LinkedNode list= new LinkedNode();Stu_node node1 = new Stu_node(1,'張三');Stu_node node2 = new Stu_node(2,'李四');Stu_node node3 = new Stu_node(3,'王二');Stu_node node4 = new Stu_node(4,'麻子');Stu_node node5 = new Stu_node(5,'趙六');//打印添加節點之前的鏈表list.print();//尾結點添加節點list.add(node1);list.add(node2);list.add(node3);list.add(node4);list.add(node5);//打印添加加點之后的鏈表list.print();System.out.println('-------------------');//定義一個頭結點接收調用函數返回的頭節點Stu_node head = list.reverse_stack(list.head);//遍歷輸出每個節點while (head.next!=null){ System.out.println(head); head=head.next;} }}//定義一個鏈表的操作類class LinkedNode{ //定義一個頭結點 Stu_node head = new Stu_node(-1,' '); //添加鏈表的方法 public void add(Stu_node node){Stu_node temp = head;while(true){ if (temp.next==null)break; temp=temp.next;}temp.next=node; } //打印鏈表 public void print(){Stu_node temp = head.next;if (head.next==null){ System.out.println('此鏈表為空');}while (temp!=null){ System.out.println(temp); temp=temp.next;} } //原地反轉 public Stu_node reverse_list(Stu_node head){if (head.next==null ||head.next.next==null) return null;Stu_node dump = new Stu_node(-1,' ');dump.next=head;Stu_node prev = dump.next;Stu_node pcur = prev.next;while(pcur!=null){ prev.next=pcur.next; pcur.next=dump.next; dump.next=pcur; pcur=prev.next;}return dump.next; } //新建一個新的鏈表,頭結點插入法實現鏈表的反轉 public Stu_node reverse_list1 (Stu_node head){Stu_node dump = new Stu_node(-1,' ');Stu_node pcur = head;while(pcur!=null){ Stu_node pnext = pcur.next; pcur.next = dump.next; dump.next=pcur; pcur=pnext;}return dump.next; } //利用棧實現反轉鏈表 public Stu_node reverse_stack(Stu_node head){Stack<Stu_node> stack = new Stack<>();Stu_node temp = head;//鏈表入棧while(temp!=null){ stack.push(temp); temp=temp.next;}//取出一個節點當做新的鏈表的頭結點Stu_node new_head = stack.pop();Stu_node cur = new_head;//出站while(!stack.isEmpty()){ Stu_node node = stack.pop(); //將出站的節點指向取消 node.next=null; //將新的鏈表串起來 cur.next = node; cur = node;}return new_head; }}//節點類class Stu_node{ int num; String name; Stu_node next; //重寫toString方法,顯示節點數據 @Override public String toString() {return 'Stu_node{' +'num=' + num +', name=’' + name + ’’’ +’}’; } public Stu_node(int num, String name) {this.num = num;this.name = name; }}總結

到此這篇關于Java實現單鏈表反轉的多種方法的文章就介紹到這了,更多相關Java單鏈表反轉方法內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 两头忙,井下装载机,伸缩臂装载机,30装载机/铲车,50装载机/铲车厂家_价格-莱州巨浪机械有限公司 | 渣油泵,KCB齿轮泵,不锈钢齿轮泵,重油泵,煤焦油泵,泊头市泰邦泵阀制造有限公司 | 防火板_饰面耐火板价格、厂家_品牌认准格林雅 | 管家婆-管家婆软件-管家婆辉煌-管家婆进销存-管家婆工贸ERP | 底部填充胶_电子封装胶_芯片封装胶_芯片底部填充胶厂家-东莞汉思新材料 | 微信小程序定制,广州app公众号商城网站开发公司-广东锋火 | 单螺旋速冻机-双螺旋-流态化-隧道式-食品速冻机厂家-广州冰泉制冷 | 济南玻璃安装_济南玻璃门_济南感应门_济南玻璃隔断_济南玻璃门维修_济南镜片安装_济南肯德基门_济南高隔间-济南凯轩鹏宇玻璃有限公司 | 志高装潢官网-苏州老房旧房装修改造-二手房装修翻新 | 奇酷教育-Python培训|UI培训|WEB大前端培训|Unity3D培训|HTML5培训|人工智能培训|JAVA开发的教育品牌 | 防水套管厂家_刚性防水套管_柔性防水套管_不锈钢防水套管-郑州中泰管道 | 纯水电导率测定仪-万用气体检测仪-低钠测定仪-米沃奇科技(北京)有限公司www.milwaukeeinst.cn 锂辉石检测仪器,水泥成分快速分析仪-湘潭宇科分析仪器有限公司 手术室净化装修-手术室净化工程公司-华锐手术室净化厂家 | 超细|超微气流粉碎机|气流磨|气流分级机|粉体改性机|磨粉机|粉碎设备-山东埃尔派粉体科技 | 冷藏车厂家|冷藏车价格|小型冷藏车|散装饲料车厂家|程力专用汽车股份有限公司销售十二分公司 | 滚珠丝杆升降机_螺旋升降机_丝杠升降机-德迈传动 | pbt头梳丝_牙刷丝_尼龙毛刷丝_PP塑料纤维合成毛丝定制厂_广州明旺 | 上海小程序开发-小程序制作-上海小程序定制开发公司-微信商城小程序-上海咏熠 | 网络推广公司_网络营销方案策划_企业网络推广外包平台-上海澜推网络 | 对夹式止回阀_对夹式蝶形止回阀_对夹式软密封止回阀_超薄型止回阀_不锈钢底阀-温州上炬阀门科技有限公司 | 深圳货架厂家_金丽声精品货架_广东金丽声展示设备有限公司官网 | 锂辉石检测仪器,水泥成分快速分析仪-湘潭宇科分析仪器有限公司 | 细砂提取机,隔膜板框泥浆污泥压滤机,螺旋洗砂机设备,轮式洗砂机械,机制砂,圆锥颚式反击式破碎机,振动筛,滚筒筛,喂料机- 上海重睿环保设备有限公司 | 粉末冶金注射成型厂家|MIM厂家|粉末冶金齿轮|MIM零件-深圳市新泰兴精密科技 | 丝杆升降机-不锈钢丝杆升降机-非标定制丝杆升降机厂家-山东鑫光减速机有限公司 | 电伴热系统施工_仪表电伴热保温箱厂家_沃安电伴热管缆工业技术(济南)有限公司 | 防弹玻璃厂家_防爆炸玻璃_电磁屏蔽玻璃-四川大硅特玻科技有限公司 | 避光流动池-带盖荧光比色皿-生化流动比色皿-宜兴市晶科光学仪器 东莞爱加真空科技有限公司-进口真空镀膜机|真空镀膜设备|Polycold维修厂家 | 山东太阳能路灯厂家-庭院灯生产厂家-济南晟启灯饰有限公司 | 环讯传媒,永康网络公司,永康网站建设,永康小程序开发制作,永康网站制作,武义网页设计,金华地区网站SEO优化推广 - 永康市环讯电子商务有限公司 | 雪花制冰机(实验室雪花制冰机)百科| 石英粉,滑石粉厂家,山东滑石粉-莱州市向阳滑石粉有限公司 | 全温恒温摇床-水浴气浴恒温摇床-光照恒温培养摇床-常州金坛精达仪器制造有限公司 | PCB厂|线路板厂|深圳线路板厂|软硬结合板厂|电路板生产厂家|线路板|深圳电路板厂家|铝基板厂家|深联电路-专业生产PCB研发制造 | 东莞精密模具加工,精密连接器模具零件,自動機零件,冶工具加工-益久精密 | 医学模型生产厂家-显微手术模拟训练器-仿真手术模拟训练系统-北京医教科技 | 高压负荷开关-苏州雷尔沃电器有限公司 | 热风机_工业热风机生产厂家上海冠顶公司提供专业热风机图片价格实惠 | 贴板式电磁阀-不锈钢-气动上展式放料阀-上海弗雷西阀门有限公司 工业机械三维动画制作 环保设备原理三维演示动画 自动化装配产线三维动画制作公司-南京燃动数字 | 净化车间装修_合肥厂房无尘室设计_合肥工厂洁净工程装修公司-安徽盛世和居装饰 | 真空干燥烘箱_鼓风干燥箱 _高低温恒温恒湿试验箱_光照二氧化碳恒温培养箱-上海航佩仪器 | 工业车间焊接-整体|集中除尘设备-激光|等离子切割机配套除尘-粉尘烟尘净化治理厂家-山东美蓝环保科技有限公司 |