java 靜態(tài)鏈表實(shí)現(xiàn)示例詳解
正文
試著用 java 來實(shí)現(xiàn)下鏈表,因?yàn)?java 沒有指針概念的緣故,用數(shù)組的下標(biāo)來代替指針,這樣一個(gè)靜態(tài)鏈表就出來了。
靜態(tài)雙向不循環(huán)鏈表
public class Test { public static void main(String[] args) { L l = new L(); l.init(); l.insert(123); l.insert(456); l.insert(789); l.insert(222); int removeIndex = l.insert(333); l.show(); l.removeNode(removeIndex); l.show(); System.exit(0); } } /** * 靜態(tài)鏈表 */ class L { private static final int MAX = 100; //鏈表的最大容量 private Node node[] = new Node[MAX]; private int head; //頭指針,頭指針區(qū)域可存儲(chǔ)數(shù)據(jù)也可以不存儲(chǔ)數(shù)據(jù),只用來做向?qū)?我這里是存儲(chǔ)了數(shù)據(jù). class Node { public int next = -1; //指針指向的后一個(gè)節(jié)點(diǎn) public int pre = -1; //指針指向的前一個(gè)節(jié)點(diǎn) public long value = -1; //節(jié)點(diǎn)的值 } /** * 初始化鏈表空間,其實(shí)這個(gè)可以在實(shí)例化類的時(shí)候完成的. */ public void init() { head = 0; for (int i = 0; i < MAX; i++) { node[i] = new Node(); node[i].next = -1; //為了簡單的實(shí)現(xiàn)下,假設(shè)空值為-1 node[i].pre = -1; node[i].value = -1; } } /** * 分配節(jié)點(diǎn)空間,類似于c里的malloc * * @return int */ public int malloc() { for (int i = 0; i < MAX; i++) { if (node[i].pre < 0 && node[i].next < 0 && node[i].value < 0) { return i; } } System.out.println("malloc fail ,full"); return -1; } /** * 移除節(jié)點(diǎn) * * @param indexNode indexNode */ public void removeNode(int indexNode) { if (indexNode < 0) { System.out.println("removeNode indexNode is error"); return; } int preNode = node[indexNode].pre; int nextNode = node[indexNode].next; node[indexNode].pre = -1; node[indexNode].next = -1; node[indexNode].value = -1; if (nextNode >= 0) { node[nextNode].pre = preNode; } //頭節(jié)點(diǎn)被移除 if (preNode < 0) { head = nextNode; } else { node[preNode].next = nextNode; } } /** * 插入節(jié)點(diǎn) * * @param v v */ public int insert(long v) { int index = head; while (node[index].next >= 0) { index = node[index].next; } int insertNodeIndex = malloc(); if (insertNodeIndex < 0) { System.out.println("malloc error,please check malloc function."); return -1; } node[insertNodeIndex].value = v; if (insertNodeIndex == head) { node[insertNodeIndex].pre = -1; } else { node[index].next = insertNodeIndex; node[insertNodeIndex].pre = index; } return insertNodeIndex; } /** * 測試下顯示這個(gè)鏈表 */ public void show() { int index = head; System.out.println("show l:-------------------------"); while (node[index].next >= 0) { System.out.println(node[index].value); index = node[index].next; } System.out.println(node[index].value); System.out.println("show l end:-----------------------"); System.out.println("test show l start:_______________"); while (node[index].pre >= 0) { System.out.println(node[index].value); index = node[index].pre; } System.out.println(node[index].value); System.out.println("test show l end:_______________"); } }
以上就是java 靜態(tài)鏈表實(shí)現(xiàn)示例詳解的詳細(xì)內(nèi)容,更多關(guān)于java 靜態(tài)鏈表的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java跨session實(shí)現(xiàn)token接口測試過程圖解
這篇文章主要介紹了Java跨session實(shí)現(xiàn)token接口測試過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04java9的JShell小工具和編譯器兩種自動(dòng)優(yōu)化方法
這篇文章主要介紹了java9的JShell小工具和編譯器兩種自動(dòng)優(yōu)化方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07Java?lambda表達(dá)式與泛型整理總結(jié)
Lambda?表達(dá)式(lambda?expression)是一個(gè)匿名函數(shù),Lambda表達(dá)式基于數(shù)學(xué)中的λ演算得名。泛型編程,故如其名,是一個(gè)泛化的編程方式。其實(shí)現(xiàn)原理為程序員編寫一個(gè)函數(shù)/類的代碼示例,讓編譯器去填補(bǔ)出不同的函數(shù)實(shí)現(xiàn)2022-07-07Java多線程通信wait()和notify()代碼實(shí)例
這篇文章主要介紹了Java多線程通信wait()和notify()代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04java如何在項(xiàng)目中實(shí)現(xiàn)excel導(dǎo)入導(dǎo)出功能
這篇文章主要介紹了java如何在項(xiàng)目中實(shí)現(xiàn)excel導(dǎo)入導(dǎo)出功能的相關(guān)資料,EasyExcel是一個(gè)基于Apache?POI開發(fā)的開源Java庫,用于簡化Excel文件的讀寫操作,文中將用法介紹的非常詳細(xì),需要的朋友可以參考下2024-10-10springboot使用之多個(gè)filter的執(zhí)行順序以及配置方式
這篇文章主要介紹了springboot使用之多個(gè)filter的執(zhí)行順序以及配置方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08Spring AOP之@Around,@AfterReturning使用、切不進(jìn)去的解決方案
這篇文章主要介紹了Spring AOP之@Around,@AfterReturning使用、切不進(jìn)去的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05