单链表反转

来源:互联网 发布:中国产业安全数据指南 编辑:程序博客网 时间:2024/05/20 06:28
package src;import java.util.Stack;/* * 单链表反转 * author : Huixing Fang  */public class ReverseLinkedList {static class Node {int value;Node next;Node(){}Node(int value, Node next){this.value = value;this.next = next;}}public ReverseLinkedList() {}//使用迭代方法public static Node reverseite(Node head){if (head==null) return null; // 如果传入的链表为空else {Node paresult = reverse(head.next); //反转除了头结点外的链表部分head.next = null;if (paresult==null) return head; //如果链表只有一个结点else { //如果链表有两个以上结点Node curr = paresult; //令curr指向除了头结点外的链表部分反转之后的链表while(true){if (curr.next == null) {//找到部分反转链表的最后一个结点,让它指向原始头结点curr.next = head;    break;//将原始头结点放入反正链表最后一个结点,然后退出循环}else curr = curr.next;//若还没有到最后一个结点,则继续找下一个结点}return paresult;//返回反转后的链表}}}//用堆栈的方式,只要遍历一遍链表,把结点依次放入堆栈中。遍历结束后,//再从堆栈中取出结点,依次建立结点间的关系,即为反转的链表public static Node reverse(Node head){if (head==null) return head;Node revhead = null;Stack<Node> nodestack = new Stack<Node>();while(head!=null){//放入堆栈nodestack.push(head);head = head.next;}revhead = nodestack.pop(); Node curr = revhead;while(true){//从堆栈中取出结点,得到反转链表if (nodestack.size()>0){Node newpop = nodestack.pop();curr.next = newpop; //依次建立关系curr = newpop;}else{//处理最后一个结点curr.next = null;break;}}return revhead;}public static void printnodes(Node head){while(head!=null){System.out.println(head.value);head = head.next;}}public static void main(String[] args) {// TODO Auto-generated method stubNode head = null;//Node head = new Node(0, null);//Node head = new Node(0, new Node(1, null));//Node head = new Node(0, new Node(1, new Node(2, null)));Node result = reverse(head);printnodes(result);result = reverseite(head);printnodes(result);}}

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小孩的胳膊肘关节处摔断开了怎么办 生完孩子以后奶头总有脏东西怎么办 月经有黑乎乎的脏东西下不来怎么办 四季梅叶子打卷花从粉变白怎么办 新移栽的竹子出来太细怎么办 土培富贵竹长得太高了怎么办 毛竹加工厂被环保查了该怎么办? 领养姐姐家的孩子怎么办领养手续 孩子喝了点杯子变质发霉的水怎么办 杯子发霉没洗干净喝了水怎么办 小孩的咪咪头没有突出来怎么办 手被竹子刺了肿了怎么办 紫竹刚栽叶子发枯怎么办能活吗 移栽大田的水稻过施了氮肥怎么办 股骨术后六十天有小量骨痂怎么办 被桃树上的蜂蜜咬了怎么办 照片回收站密码找不回来了怎么办 扣扣空间照片回收站密码忘了怎么办 我眼睛近视了不想戴眼镜怎么办 微信聊天对方只回一个字怎么办 大学室友都不是自己喜欢的人怎么办 超轻粘土粘在衣服上怎么办 粽子昨晚煮好今日发现不够熟怎么办 5岁宝宝左眼轻微散光怎么办光 孩子总吸鼻子但没有鼻涕怎么办 纹完眼线眼睛磨的很难受怎么办 我的脸型眼睛好看牙不好看怎么办 陌陌当日打招呼人数已达上限怎么办 新生婴儿白天睡觉晚上不睡怎么办 被有翅膀的蚂蚁咬了怎么办 被带翅膀的蚂蚁蛰了怎么办 被长翅膀的蚂蚁咬了怎么办 宝宝被带翅膀的蚂蚁咬了怎么办 新的小白鞋鞋子有点夹脚怎么办 单反快门按不下去里面响怎么办 在上海动漫城游戏厅里输了钱怎么办 电缝纫机扎快了上线有套那是怎么办 老式缝纫机底线总夹梭子上怎么办 两个月宝宝脸一边大一边小怎么办 炒股入金10万亏3万怎么办 如果一支股票有好几个庄家怎么办