如何将链表反转

实现单链表的反转

实现单链表反转有多种方式  可以采用递归等方式实现

下面实现方式为采用栈   栈先进后出原则

package cn.ac.bcc.reverse;

import java.util.Enumeration;
import java.util.LinkedList;
import java.util.Stack;

/**
 * 实现一个单链表的反转
 * @author Administrator
 *  代码的健壮性  时间复杂度  代码规范
 */
public class LinkReverser {
    
    public static void main(String[] args) {
        LinkedList<Integer> list = new LinkedList<Integer>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        System.out.println(list);
        LinkedList newList = reOutput(list);
        System.out.println(newList);
    
    }
    /**
     * 采用栈  先进后出原则实现  反转
     * @param list
     * @return
     */
    public static LinkedList<Integer> reOutput(LinkedList<Integer> list){
        //创建一个栈
        Stack s = new Stack();
        //将数据添加到栈中
        for(Integer i:list){
            s.push(i);
        }
        //创建一个新的链表
        LinkedList<Integer> newList = new LinkedList<Integer>();
         //获取栈枚举类型元素集合
        Enumeration elements = s.elements();
        //判断当前是否存在下一个元素
        while(elements.hasMoreElements()){
            //取出栈顶元素  添加到新的链表中
            newList.add((Integer) s.pop());
        }
        return newList;
    }
}
原文地址:https://www.cnblogs.com/lwdmaib/p/9276321.html