創建鏈表及逆序鏈表
前言
最近在刷題,就自己操作了,順便記錄下來。
代碼
直接上代碼,分爲創建鏈表和反轉鏈表部分,歡迎大家一起討論。
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();
}
}
順便格式化輸出了下。