成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Java如何實現(xiàn)帶頭結(jié)點的單鏈表

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

目前創(chuàng)新互聯(lián)建站已為1000多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、綿陽服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計、三山網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

鏈表的特點

1,以節(jié)點方式存儲,是鏈?zhǔn)浇Y(jié)構(gòu)。

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

3,鏈表的各個節(jié)點不一定是連續(xù)存儲。

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

實現(xiàn)原理

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

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

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

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

主要代碼

package cn.mrlij.linkedlist;/*** * 單鏈表的實現(xiàn) * @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{ //創(chuàng)建一個頭結(jié)點,初始化數(shù)據(jù),頭結(jié)點不要動,不放具體的數(shù)據(jù) private HeroNode head = new HeroNode(0,"",""); //添加英雄 public void add(HeroNode node) { //先找出最后的一個節(jié)點,把新加的節(jié)點放在最后一個節(jié)點的后面 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+"已經(jīng)存在了!"); }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("不存在該節(jié)點!"); } } //刪除節(jié)點 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("該節(jié)點不存在!"); } } 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;//下一個節(jié)點 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如何實現(xiàn)帶頭結(jié)點的單鏈表”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

本文名稱:Java如何實現(xiàn)帶頭結(jié)點的單鏈表
網(wǎng)頁URL:http://jinyejixie.com/article42/ggeeec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設(shè)、App開發(fā)、定制網(wǎng)站、虛擬主機、移動網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
莆田市| 景谷| 香港 | 彭山县| 吕梁市| 随州市| 蒲城县| 香港| 嘉祥县| 石狮市| 闽侯县| 建德市| 石首市| 三河市| 左贡县| 横峰县| 台中市| 高唐县| 多伦县| 贵阳市| 颍上县| 乡城县| 右玉县| 湖口县| 弥渡县| 台北县| 武义县| 保靖县| 商洛市| 定边县| 高雄市| 财经| 通榆县| 桃江县| 什邡市| 黔西县| 育儿| 渭源县| 兴义市| 平潭县| 肇东市|