91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java如何實現帶頭結點的單鏈表

發布時間:2021-09-26 18:13:12 來源:億速云 閱讀:144 作者:小新 欄目:編程語言

這篇文章主要介紹Java如何實現帶頭結點的單鏈表,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

鏈表的特點

1,以節點方式存儲,是鏈式結構。

2,每個節點包含data域,next域:指向下一個節點。

3,鏈表的各個節點不一定是連續存儲。

4,鏈表分為帶頭節點和不帶頭節點兩種類型的鏈表。

實現原理

添加節點:首先遍歷原有鏈表,找到最后一個節點,將要增加的節點添加到該節點的后面。下面介紹如何找到最后一個節點。

思路是這樣的,先遍歷整個鏈表,定義一個輔助變量temp,用于暫時存儲遍歷出來的各個節點。首先將head頭節點賦給temp(從頭節點開始遍歷),通過一個死循環不斷的遍歷節點的next,直到temp.next==null時,該節點temp就是鏈表的最后一個節點,只需要將該節點的next指向新增節點就行了。

修改節點:首先遍歷整個鏈表,通過傳入的編號去匹配原有的鏈表的編號,找到對應的編號將節點里面的數據替換即可。

刪除節點:如圖所示,要刪除某一節點,需要遍歷整個鏈表,找到該節點對應的編號,再將該前一個節點的next指向要刪除的節點的后面的一個節點,即(temp.next = temp.next.next)。由于被刪除的節點沒有被引用,將會被垃圾回收機制回收掉。

主要代碼

package cn.mrlij.linkedlist;/*** * 單鏈表的實現 * @author dreamer * */public class SingleLinkedList { public static void main(String[] args) { SingleLinkedListDemo s = new SingleLinkedListDemo(); HeroNode h2 = new HeroNode(1, "宋江", "及時雨"); HeroNode h3 = new HeroNode(3, "盧俊義", "玉麒麟"); HeroNode h4 = new HeroNode(4, "吳用", "智多星"); HeroNode h5 = new HeroNode(2, "林沖", "豹子頭"); s.addByOrder(h2); s.addByOrder(h3); s.addByOrder(h4); s.addByOrder(h5); System.out.println("修改前————"); s.list();// HeroNode h6 = new HeroNode(4, "有用", "超星星");// s.update(h6); s.del(1); s.del(4); s.del(2); s.del(3); System.out.println("刪除后————"); s.list(); } }class SingleLinkedListDemo{ //創建一個頭結點,初始化數據,頭結點不要動,不放具體的數據 private HeroNode head = new HeroNode(0,"",""); //添加英雄 public void add(HeroNode node) { //先找出最后的一個節點,把新加的節點放在最后一個節點的后面 HeroNode temp = head; while(true) {  if(temp.next == null) {  break;  }  temp = temp.next; } temp.next = node; } public void addByOrder(HeroNode node) { HeroNode temp = head; boolean flag = false; while(true) {  if(temp.next == null) {  break;  }  if(temp.next.no>node.no) {  break;  }else if(temp.next.no == node.no) {  flag = true;  break;  }  temp = temp.next; } if(flag) {  System.out.println("編號"+node.no+"已經存在了!"); }else {  node.next = temp.next;  temp.next = node; } } public void update(HeroNode node ) { if(head.next == null) {  System.out.println("鏈表為空!");  return; } HeroNode temp = head.next; boolean flag = false; while(true) {  if(temp == null) {  break;  }  if(temp.no == node.no) {  flag = true;  break;  }  temp = temp.next; } if(flag) {  temp.name = node.name;  temp.nickname = node.name; }else {  System.out.println("不存在該節點!"); } } //刪除節點 public void del(int no) { if(head.next == null) {  System.out.println("鏈表為空!");  return; } HeroNode temp = head; boolean flag = false; while(true) {  if(temp.next == null) {  break;  }  if(temp.next.no == no) {  flag = true;  break;  }  temp = temp.next; } if(flag) {  temp.next = temp.next.next; }else {  System.out.println("該節點不存在!"); } } public void list() { HeroNode temp = head; if(temp.next == null) {  System.out.println("鏈表為空!");  return; } while(true) {  if(temp.next == null) {  break;  }  System.out.println(temp.next);  temp = temp.next;  } }}class HeroNode{ public int no;//英雄編號 public String name;//人名 public String nickname;//綽號 public HeroNode next;//下一個節點 public HeroNode(int no, String name, String nickname) { this.no = no; this.name = name; this.nickname = nickname; } @Override public String toString() { return "HeroNode [no=" + no + ", name=" + name + ", nickname=" + nickname + "]"; }   }

以上是“Java如何實現帶頭結點的單鏈表”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安泽县| 集贤县| 阳谷县| 达孜县| 镇雄县| 稻城县| 墨玉县| 景洪市| 固始县| 普宁市| 会宁县| 鹤峰县| 兴宁市| 林口县| 澎湖县| 海晏县| 铜梁县| 资兴市| 六枝特区| 保亭| 太仆寺旗| 澄城县| 德格县| 遂川县| 泸西县| 张家港市| 凤翔县| 商都县| 桦川县| 双牌县| 秦安县| 临澧县| 昭平县| 德州市| 呼和浩特市| 偏关县| 都兰县| 福泉市| 体育| 宁波市| 彭水|