日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

带头单链表有序版

發(fā)布時間:2023/12/3 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 带头单链表有序版 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
package com.atguigu.linkedlist;/*** @創(chuàng)建人 wdl* @創(chuàng)建時間 2021/3/17* @描述*/ public class SingleLinkedListDemo {public static void main(String[] args) {//進行測試//先創(chuàng)建節(jié)點HeroNode hearo1 = new HeroNode(1, "宋江", "及時雨");HeroNode hearo2 = new HeroNode(2, "盧俊義", "玉麒麟");HeroNode hearo3 = new HeroNode(3, "吳用", "智多星");HeroNode hearo4 = new HeroNode(4, "林沖", "及時釘釘雨");//創(chuàng)建一個鏈表SingleLinkedList singleLinkedList = new SingleLinkedList(); // //加入 // singleLinkedList.add(hearo1); // singleLinkedList.add(hearo2); // singleLinkedList.add(hearo3); // singleLinkedList.add(hearo4);//加入按照編號的順序singleLinkedList.addByOrder(hearo1);singleLinkedList.addByOrder(hearo4);singleLinkedList.addByOrder(hearo2);singleLinkedList.addByOrder(hearo3);//顯示一把singleLinkedList.list();} }//定義SingleLinkedList管理我們的英雄 class SingleLinkedList{//先初始化一個頭節(jié)點,頭節(jié)點不要動,不存放具體的數(shù)據(jù)private HeroNode head=new HeroNode(0,"","");//添加節(jié)點到單向鏈表//思路,當不考慮編號順序是//1.找到當前鏈表的最后節(jié)點//2.將最后這個節(jié)點的next指向新的節(jié)點public void add(HeroNode heroNode){//因為head節(jié)點不能動,因此我們需要一個輔助遍歷tempHeroNode temp=head;//遍歷鏈表,找到最后while(true){//找到鏈表的最后if(temp.next==null){break;}//如果沒有找到最后,將temp后移temp=temp.next;}//當退出while循環(huán)時,temp就指向了鏈表的最后//將最后這個節(jié)點的next指向新的節(jié)點temp.next=heroNode;}//第二種方式在添加英雄時,根據(jù)排名將英雄插入到指定位置// (如果有這個排名,則添加失敗,并會給出提示)public void addByOrder(HeroNode heroNode){//因為頭節(jié)點不能動,因此我們?nèi)匀煌ㄟ^一個輔助指針(變量)來幫助找到添加的位置//因為單鏈表,我們找到的temp是位于添加位置的前一個節(jié)點,否則插入不了HeroNode temp=head;boolean flag=false;//flag標志添加的編號是否存在,默認為falsewhile (true){if(temp.next==null){//說明temp已經(jīng)在鏈表的最后break;}if(temp.next.no>heroNode.no){//位置找到,就在temp的后面插入break;}else if(temp.next.no==heroNode.no){//說明希望添加的heroNode的編號已經(jīng)存在flag=true;//說明編號存在break;}temp=temp.next;//后移,遍歷當前鏈表}//判斷flag的值if(flag){//不能添加,說明編號存在System.out.println("準備插入的英雄的編號"+heroNode.no+"已經(jīng)存在了,不能加入");}else {//插入到鏈表中,temp的后面heroNode.next=temp.next;temp.next=heroNode;}}//顯示鏈表[遍歷]public void list(){//判斷鏈表是否為空if(head.next==null){System.out.println("鏈表為空");return;}//因為頭節(jié)點不能動,因此我們需要一個輔助變量來遍歷HeroNode temp= head.next;while(true){//判斷是否到鏈表最后if(temp==null){break;}//輸出節(jié)點的信息System.out.println(temp.toString());//將temp后移,一定要小心temp=temp.next;}}}//定義HeroNode,每個HeroNode對象就是一個節(jié)點 class HeroNode{public int no;public String name;public String nickname;public HeroNode next;//指向下一個節(jié)點//構(gòu)造器public HeroNode(int no,String name,String nickname){this.no=no;this.name=name;this.nickname=nickname;}//為了顯示方法,我們重寫toString@Overridepublic String toString() {return "HeroNode{" +"no=" + no +", name='" + name + '\'' +", nickname='" + nickname + '\'' + // ", next=" + next +'}';} }

總結(jié)

以上是生活随笔為你收集整理的带头单链表有序版的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。