【Java】鏈表的頭插法和尾插法

頭插法

頭插法就是在已有的節點的前面插入新節點

如何實現

(1)先定義一個節點類ListNode,里面有value值和地址

public class ListNode {int value;ListNode next;public ListNode(int value){this.value = value;}@Overridepublic String toString() {return "ListNode{" +"value=" + value +", next=" + next +'}';}
}

(2)再創建一個鏈表類,里面定義一個頭節點,ListNode head = null;把第一個節點的指針傳給它,然后用頭插法插入一個新的節點

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
下面是頭插法的代碼:

 /*** 頭插法   結果是逆序* @param value*/public void headInsert(int value){ListNode node = new ListNode(value);if(head == null){head = node;return ;}node.next = head;head= node;}

尾插法

在鏈表的最后面插入節點

尾插法與頭插法不同的是,先要找到鏈表最后面那個節點,所以就要定義一個游標index,index從頭結點開始,如果index.next不是null,那么就往后面走,直到找到最后一個節點

此時游標index在頭結點
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
尾插法的相關代碼:

 /*** 尾插法* @param value*/public void headFront(int value){ListNode node = new ListNode(value);if(head ==null){head = node;return ;}ListNode index = head;while(index.next != null){index = index.next;}index.next= node;}

總的ListLink類代碼如下:

public class LinkList {public ListNode head;/*** 頭插法   結果是逆序* @param value*/public void headInsert(int value){ListNode node = new ListNode(value);if(head == null){head = node;return ;}node.next = head;head= node;}/*** 尾插法* @param value*/public void headFront(int value){ListNode node = new ListNode(value);if(head ==null){head = node;return ;}ListNode index = head;while(index.next != null){index = index.next;}index.next= node;}
}

測試類:

public class Test {public static void main(String[] args) {LinkList linkList =new LinkList();//頭插法的測試
//        linkList.headInsert(5);
//        linkList.headInsert(7);
//        linkList.headInsert(15);
//        linkList.headInsert(25);
//        linkList.headInsert(45);
//        linkList.headInsert(6);
//        System.out.println(linkList.head);//尾插法的測試linkList.headFront(3);linkList.headFront(6);linkList.headFront(4);linkList.headFront(78);linkList.headFront(34);linkList.headFront(28);linkList.headFront(12);System.out.println(linkList.head);}
}

要注意的是 頭插法的結果是倒序的,而尾插法的結果是正序的

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/45103.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/45103.shtml
英文地址,請注明出處:http://en.pswp.cn/web/45103.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

開發指南046-機構樹控件

為了簡化編程&#xff0c;平臺封裝了很多前端組件。機構樹就是常用的組件之一。 基本用法&#xff1a; import QlmOrgTree from /qlmcomponents/tree/QlmOrgTree <QlmOrgTree></QlmOrgTree> 功能&#xff1a; 根據權限和控制參數顯示機構樹。機構樹數據來源于核…

讓我們一起來看看這些強大的中國汽車品牌如何勇攀巔峰!

咱們中國的汽車品牌&#xff0c;就是這么牛&#xff01;你知道嗎&#xff1f;他們已經悄悄崛起&#xff0c;一步步向著更廣闊的海外市場進軍了。盡管這個過程可能有點坎坷&#xff0c;但是“勇敢”始終是他們前行的動力&#xff0c;推動著他們不斷向前&#xff0c;打造屬于我們…

AGI 之 【Hugging Face】 的【文本摘要】的 [評估PEGASUS ] / [ 微調PEGASUS ] / [生成對話摘要] 的簡單整理

AGI 之 【Hugging Face】 的【文本摘要】的 [評估PEGASUS ] / [ 微調PEGASUS ] / [生成對話摘要] 的簡單整理 目錄 AGI 之 【Hugging Face】 的【文本摘要】的 [評估PEGASUS ] / [ 微調PEGASUS ] / [生成對話摘要] 的簡單整理 一、簡單介紹 二、文本摘要 三、在CNN/Daily…

秋招突擊——7/9——MySQL索引的使用

文章目錄 引言正文B站網課索引基礎創建索引如何在一個表中查看索引為字符串建立索引全文索引復合索引復合索引中的排序問題索引失效的情況使用索引進行排序覆蓋索引維護索引 數據庫基礎——文檔資料學習整理創建索引刪除索引創建唯一索引索引提示復合索引聚集索引索引基數字符串…

C#基于任務的異步模式(TAP)

1、C#異步模式分類 基于任務的異步模式&#xff08;TAP&#xff09; 基于事件的異步模式&#xff08;EAP&#xff09;和異步編程模型模式&#xff08;APM&#xff09; 2、基于任務的異步模式&#xff08;TAP&#xff09; 基于任務的異步模式&#xff08;TAP&#xff09;用單個方…

從零手寫實現 nginx-28-error pages 指令

前言 大家好&#xff0c;我是老馬。很高興遇到你。 我們為 java 開發者實現了 java 版本的 nginx https://github.com/houbb/nginx4j 如果你想知道 servlet 如何處理的&#xff0c;可以參考我的另一個項目&#xff1a; 手寫從零實現簡易版 tomcat minicat 手寫 nginx 系列 …

夾子音轉換器matlab

操作過程點擊此處觀看 上段時間補習了一下傅里葉變化的知識&#xff0c;突發奇想可以根據此做一款聲音轉換器&#xff0c;使用工科神器Matlab進行完成&#xff0c;并且開發了可操作界面如下圖所示&#xff1a; 功能實現與描述 軟件中可以實現聲音的錄制、回放、文件的保存與…

【C++】動態內存分配(關于構造與析構函數的調用)動態數組類 動態創建多維數組 知識點+代碼學習記錄

一.動態內存分配相關知識點 1.堆和棧內存&#xff1a; 堆內存&#xff1a;動態分配的內存位于堆中&#xff0c;它不受作用域限制&#xff0c;由程序員控制其生命周期。 棧內存&#xff1a;局部變量和函數參數等自動分配的內存位于棧中&#xff0c;由編譯器自動管理。 2.new…

性能測試(2)

jmeter參數化 loadrunner Jmeter IP欺騙&#xff0c;也稱為IP欺詐&#xff0c;是指通過偽裝、篡改IP地址的方式&#xff0c;進行網絡攻擊或欺騙行為。這種行為可能會導致網絡安全問題&#xff0c;包括身份盜竊、數據泄露、DDoS攻擊等。為了保護自己的網絡安全&#xff0c;用戶…

MySQL-表的約束

文章目錄 一、空屬性二、默認值三、zerofill四、列描述五、主鍵刪除主鍵追加主鍵復合主鍵根據主鍵快速索引 六、自增長last_insert_id() 七、唯一鍵八、外鍵class表&#xff08;主表&#xff09;student表&#xff08;從表&#xff09; 一、空屬性 之前我們將表的機構&#xff…

單例模式java

并發的有序性會導致返回空指針 class A{private static volatil A a;private A(){}public A getInstance(){if(anull){synchronized(A.class){if(anull)anew A();}}return a; }anew A();這條語句&#xff0c;他需要&#xff1a;開辟空間&#xff0c;初始化空間&#xff0c;指針…

python熱門面試題三

面試題1&#xff1a;Python中的列表推導式是什么&#xff1f;請給出一個例子。 回答&#xff1a; 列表推導式&#xff08;List Comprehension&#xff09;是Python中一種非常強大且簡潔的構建列表的工具。它允許你通過一個表達式來創建一個新的列表&#xff0c;這個表達式定義…

無顯卡也可以玩大模型-MiniGPT-4篇

MiniGPT-4學習 1.Colab上部署MiniGPT-42.論文摘要3.模型架構4.模型訓練5.總結 1.Colab上部署MiniGPT-4 代碼&#xff1a; https://github.com/Czi24/Awesome-MLLM-LLM-Colab/blob/master/MLLM/MiniGPT-4-colab/MiniGPT-4.md 2.論文摘要 最近的 GPT-4 展示了非凡的多模式能力&…

【設計模式之美】【建造型】工廠模式:通過面向接口編程思路,串起業務流程

文章目錄 一. 簡單工廠&#xff08;Simple Factory&#xff09;第一種簡單工廠&#xff1a;面向接口編程與工廠類&#xff1a;劃分功能職責第二種&#xff1a;單例簡單工廠&#xff1a;節省內存和對象創建的時間 二. 工廠方法&#xff08;Factory Method&#xff09;&#xff1…

文心一言:如何備考軟考架構師

提問&#xff1a;軟考高級:架構師指導&#xff0c;有哪些考點、重點考點有哪些&#xff1f;需要如何備考&#xff1f;案例分析題如何做&#xff1f;論文如何寫&#xff1f; 文心一言回答1700字如下&#xff1a; 針對軟考高級架構師的考試&#xff0c;以下是對考點、重點考點、備…

DiffusionModel-Transformer知識回顧

論文鏈接&#xff1a; Attention Is All You Need CNN vs RNN vs Transformer CNN&#xff08;卷積神經網絡&#xff09; 特點&#xff1a; 局部連接&#xff1a;每個卷積神經元只與輸入數據的局部區域連接&#xff0c;這有助于捕捉局部特征。權重共享&#xff1a;卷積核的權重…

Android筆記:Constructor (xxx) has been changed after generation.

遇到此報錯時&#xff0c;onstructor (xxx) has been changed after generation.是因為修改了實體類字段后什么都不修改的話就會報這個錯 這條信息是關于代碼生成和代碼變更的警告。當你使用某些工具&#xff08;如注解處理器、代碼生成庫等&#xff09;來自動生成代碼時&…

運行在Linux上的程序越來越慢的排查思路

1、通過free -h 排查內存使用情況&#xff0c;是否內存滿了 2、通過df -h 排查磁盤的使用情況&#xff0c;磁盤是否沒有空間了 3、檢查系統資源配置情況&#xff0c;比如使用ulimit -a檢查當前會話的資源限制&#xff0c;如最大文件數、打開文件描述符數等&#xff0c;看是否…

清華計算幾何-ConvexHull(凸包)-求極點InTriangle/ToLeft Test

ConvexHull(凸包) 凸包是什么 凸包是計算幾何一個非常基礎核心的概念。我理解的凸包就是給定一個點集合, 最外圍的點的包圍體就是凸包。如下所示: 極點(ExtremityPoint) 給定的點集合中, 如果一個點存在一條直線, 讓其他所有點都在于該直線的同一側, 則該點為極點。 非極點 …

如何理解electron 的預加載腳本

在 Electron 應用中,預加載腳本(Preload Script)是一個非常重要的概念,它允許你在渲染進程(web 頁面)和主進程之間創建一個安全的橋梁。預加載腳本運行在 Node.js 環境中,但位于渲染進程的一個單獨的上下文中,這意味著它可以訪問 Node.js 的 API,但無法直接訪問 DOM。…