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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

单链表按顺序插入节点

發布時間:2025/4/16 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 单链表按顺序插入节点 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

//第二種方式在添加英雄時,根據排名將英雄插入到指定位置//(如果有這個排名,則添加失敗,并給出提示)public void addByOrder(HeroNode heroNode) {//因為頭節點不能動,因此我們仍然通過一個輔助指針(變量)來幫助找到添加的位置//因為單鏈表,因為我們找的temp 是位于 添加位置的前一個節點,否則插入不了HeroNode temp = head;boolean flag = false; // flag標志添加的編號是否存在,默認為falsewhile (true) {if (temp.next == null) {//說明temp已經在鏈表的最后break; //}if (temp.next.no > heroNode.no) { //位置找到,就在temp的后面插入break;} else if (temp.next.no == heroNode.no) {//說明希望添加的heroNode的編號已然存在flag = true; //說明編號存在break;}temp = temp.next; //后移,遍歷當前鏈表}//判斷flag 的值if (flag) { //不能添加,說明編號存在System.out.printf("準備插入的英雄的編號 %d 已經存在了, 不能加入\n", heroNode.no);} else {//插入到鏈表中, temp的后面heroNode.next = temp.next;temp.next = heroNode;}}

SingleLinkedListDemo.java

package com.dym.linkedlist;import java.util.Stack;public class SingleLinkedListDemo {public static void main(String[] args) {//進行測試//先創建節點HeroNode hero1 = new HeroNode(1, "宋江", "及時雨");HeroNode hero2 = new HeroNode(2, "盧俊義", "玉麒麟");HeroNode hero3 = new HeroNode(3, "吳用", "智多星");HeroNode hero4 = new HeroNode(4, "林沖", "豹子頭");//創建要給鏈表SingleLinkedList singleLinkedList = new SingleLinkedList();//加入按照編號的順序singleLinkedList.addByOrder(hero1);singleLinkedList.addByOrder(hero4);singleLinkedList.addByOrder(hero2);singleLinkedList.addByOrder(hero3);//顯示一把singleLinkedList.list();} }//定義SingleLinkedList 管理我們的英雄 class SingleLinkedList {//先初始化一個頭節點, 頭節點不要動, 不存放具體的數據private HeroNode head = new HeroNode(0, "", "");//添加節點到單向鏈表//思路,當不考慮編號順序時//1. 找到當前鏈表的最后節點//2. 將最后這個節點的next 指向 新的節點public void add(HeroNode heroNode) {//因為head節點不能動,因此我們需要一個輔助遍歷 tempHeroNode temp = head;//遍歷鏈表,找到最后while (true) {//找到鏈表的最后if (temp.next == null) {//break;}//如果沒有找到最后, 將將temp后移temp = temp.next;}//當退出while循環時,temp就指向了鏈表的最后//將最后這個節點的next 指向 新的節點temp.next = heroNode;}//第二種方式在添加英雄時,根據排名將英雄插入到指定位置//(如果有這個排名,則添加失敗,并給出提示)public void addByOrder(HeroNode heroNode) {//因為頭節點不能動,因此我們仍然通過一個輔助指針(變量)來幫助找到添加的位置//因為單鏈表,因為我們找的temp 是位于 添加位置的前一個節點,否則插入不了HeroNode temp = head;boolean flag = false; // flag標志添加的編號是否存在,默認為falsewhile (true) {if (temp.next == null) {//說明temp已經在鏈表的最后break; //}if (temp.next.no > heroNode.no) { //位置找到,就在temp的后面插入break;} else if (temp.next.no == heroNode.no) {//說明希望添加的heroNode的編號已然存在flag = true; //說明編號存在break;}temp = temp.next; //后移,遍歷當前鏈表}//判斷flag 的值if (flag) { //不能添加,說明編號存在System.out.printf("準備插入的英雄的編號 %d 已經存在了, 不能加入\n", heroNode.no);} else {//插入到鏈表中, temp的后面heroNode.next = temp.next;temp.next = heroNode;}}//顯示鏈表[遍歷]public void list() {//判斷鏈表是否為空if (head.next == null) {System.out.println("鏈表為空");return;}//因為頭節點,不能動,因此我們需要一個輔助變量來遍歷HeroNode temp = head.next;while (true) {//判斷是否到鏈表最后if (temp == null) {break;}//輸出節點的信息System.out.println(temp);//將temp后移, 一定小心temp = temp.next;}} }//定義HeroNode , 每個HeroNode 對象就是一個節點 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;}//為了顯示方法,我們重新toString@Overridepublic String toString() {return "HeroNode{" +"no=" + no +", name='" + name + '\'' +", nickname='" + nickname + '\'' +'}';} }

總結

以上是生活随笔為你收集整理的单链表按顺序插入节点的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。