資料結構--單連結串列的建立和遍歷(程式碼優化)
程式碼優化(基於上一篇部落格“資料結構–單連結串列的建立和遍歷”)
本次優化主要體現在add方法和list方法上
import java.util.Scanner;
//單向連結串列優化
public class CircleLinkedListDemo2 {
public static void main(String[] args) {
SingleLinkedList2 singleLinkedList = new SingleLinkedList2();
boolean tar = true;
while(tar){
System.out.println("請選擇你要執行的操作,add:往連結串列中新增資料 show:遍歷整個連結串列 quit:退出程式");
Scanner sc = new Scanner(System.in);
String str = sc.next();
switch(str){
case "add" :
System.out.println("請輸入新節點的序號:");
int no = sc.nextInt();
System.out.println("請輸入新節點的名字:");
String name = sc.next();
System.out.println("請輸入新節點的暱稱:");
String nickName = sc.next();
HeroNode2 newNode = new HeroNode2(no, name, nickName);
singleLinkedList.add2(newNode);
break;
case "show" :
singleLinkedList.list2(singleLinkedList.head.next);
break;
case "quit" :
tar = false;
break;
}
}
}
}
//定義SingleLinkedList,管理我們的英雄
class SingleLinkedList2{
//先初始化一個頭節點,頭節點不要動,不存放具體的資料
public HeroNode2 head = new HeroNode2(0,"","");
// 因為head節點不能動,因此我們需要一個輔助遍歷temp
public HeroNode2 temp = head;
public int count = 0;
//優化add方法:不用每次都從連結串列頭節點開始遍歷找到連結串列的最後節點
//每次往連結串列最後加完節點後,temp則指向連結串列的最後節點
public void add2(HeroNode2 heroNode){
count++;
if(count == 1){
head.next = heroNode;
}
temp.next = heroNode;
temp = heroNode;
}
//優化list方法,採用 遞迴 來遍歷連結串列
public void list2(HeroNode2 headNext){
if(head.next == null){
throw new RuntimeException("連結串列為空,沒有資料,請先新增資料再列印");
}
System.out.println("序號:"+headNext.no);
System.out.println("姓名:"+headNext.name);
System.out.println("暱稱:"+headNext.nickName);
System.out.println("-----------------------------------");
if(headNext.next != null){
list2(headNext.next); //遞迴
}
}
}
//定義HeroNode,每個HeroNode 物件就是個一個節點
class HeroNode2{
public int no;
public String name;
public String nickName;
public HeroNode2 next; //指向下一個節點
//構造器
public HeroNode2(int no, String name, String nickName){
this.no = no;
this.name = name;
this.nickName = nickName;
}
}
結果截圖:
相關文章
- 資料結構-單連結串列、雙連結串列資料結構
- 資料結構之單連結串列的建立與刪除資料結構
- 【資料結構】連結串列(單連結串列實現+詳解+原碼)資料結構
- 資料結構實驗之連結串列六:有序連結串列的建立資料結構
- 資料結構之單連結串列資料結構
- 資料結構04——單連結串列資料結構
- 資料結構實驗之連結串列二:逆序建立連結串列資料結構
- JavaScript 的資料結構和演算法 - 連結串列程式碼篇JavaScript資料結構演算法
- 資料結構實驗之連結串列五:單連結串列的拆分資料結構
- 資料結構之連結串列篇(單連結串列的常見操作)資料結構
- 資料結構:單迴圈連結串列的建立插入與刪除資料結構
- 資料結構實驗之連結串列一:順序建立連結串列資料結構
- 基本資料結構實現--單連結串列【含測試程式碼】資料結構
- 資料結構--陣列、單向連結串列、雙向連結串列資料結構陣列
- C++單連結串列遞迴遍歷操作C++遞迴
- C\C++之用結構體實現連結串列的建立、遍歷、結點插入、結點刪除C++結構體
- 單連結串列的建立
- 資料結構-連結串列資料結構
- 連結串列-資料結構資料結構
- 資料結構 - 連結串列資料結構
- 資料結構--連結串列資料結構
- 資料結構—連結串列資料結構
- js實現資料結構--單連結串列JS資料結構
- 【資料結構】線性表-單連結串列資料結構
- 資料結構和演算法——Go實現單連結串列並且反轉單連結串列資料結構演算法Go
- 動態連結串列的建立(程式碼)
- 畫江湖之資料結構【第一話:連結串列】單向連結串列資料結構
- 畫江湖之資料結構 [第一話:連結串列] 單向連結串列資料結構
- 探索資料結構:單連結串列的實戰指南資料結構
- 資料結構——單連結串列的C++實現資料結構C++
- 【資料結構】二叉樹的建立與遍歷資料結構二叉樹
- 單向連結串列的建立
- 資料結構與演算法——連結串列 Linked List(單連結串列、雙向連結串列、單向環形連結串列-Josephu 問題)資料結構演算法
- 資料結構 - 單連結串列 C++ 實現資料結構C++
- 資料結構之「連結串列」資料結構
- JavaScript資料結構--連結串列JavaScript資料結構
- 資料結構之連結串列資料結構
- 單連結串列建立連結串列出現問題