創建鏈表及逆序鏈表

創建鏈表及逆序鏈表

前言

最近在刷題,就自己操作了,順便記錄下來。

代碼

直接上代碼,分爲創建鏈表和反轉鏈表部分,歡迎大家一起討論。

package com.vic.algorithm;

import lombok.Getter;
import lombok.Setter;
import org.omg.CORBA.NO_IMPLEMENT;

/**
 * @description: 如何實現一個高效的單向鏈表逆序輸出?
 * @author: wangqp
 * @create: 2020-06-18 16:45
 **/
public class ReserveLink {
    public static void main(String[] args) {
        //創建一個鏈表
        ReserveLink link = new ReserveLink();

        ReserveLink.Node first = link.new Node();
        first.setValue(1);

        link.constructLink(first,link.new Node());

        System.out.println(first);

        System.out.println(link.prettyLink(first));

        //逆序鏈表
        Node last = null;
        Node cur = first;
        while (cur != null){
            Node temp = cur.next;
            cur.next = last;
            last = cur;
            cur = temp;
        }
        System.out.println(link.prettyLink(last));
    }

    @Getter@Setter
    class Node{
        private Integer value;
        private Node next;
        @Override
        public String toString() {
            return value.toString();
        }
    }

    private void constructLink(Node last,Node cur){
        if(last.getValue() == 10){
            return;
        }
        cur.setValue(last.getValue()+1);
        last.setNext(cur);
        constructLink(cur,new Node());
    }

    private String prettyLink(Node first){
        StringBuilder sb = new StringBuilder();
        do {
            sb.append(first.toString()).append("|");
            first = first.getNext();
        }while (first!=null);
        return sb.toString();
    }

}

順便格式化輸出了下。
console

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章