欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java 靜態(tài)鏈表實(shí)現(xiàn)示例詳解

 更新時(shí)間:2023年06月02日 14:18:33   作者:雨翔河  
這篇文章主要為大家介紹了java 靜態(tài)鏈表實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jì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)文章

  • spring關(guān)于組件的注入及獲取流程場景分析

    spring關(guān)于組件的注入及獲取流程場景分析

    這篇文章主要介紹了spring關(guān)于組件的注入及獲取流程場景分析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-07-07
  • Java跨session實(shí)現(xiàn)token接口測試過程圖解

    Java跨session實(shí)現(xiàn)token接口測試過程圖解

    這篇文章主要介紹了Java跨session實(shí)現(xiàn)token接口測試過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 實(shí)例講解Java中的synchronized

    實(shí)例講解Java中的synchronized

    這篇文章主要介紹了Java中synchronized的使用方法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • java9的JShell小工具和編譯器兩種自動(dòng)優(yōu)化方法

    java9的JShell小工具和編譯器兩種自動(dòng)優(yōu)化方法

    這篇文章主要介紹了java9的JShell小工具和編譯器兩種自動(dòng)優(yōu)化方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Java?lambda表達(dá)式與泛型整理總結(jié)

    Java?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-07
  • Java多線程通信wait()和notify()代碼實(shí)例

    Java多線程通信wait()和notify()代碼實(shí)例

    這篇文章主要介紹了Java多線程通信wait()和notify()代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • java如何在項(xiàng)目中實(shí)現(xiàn)excel導(dǎo)入導(dǎo)出功能

    java如何在項(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-10
  • springboot使用之多個(gè)filter的執(zhí)行順序以及配置方式

    springboot使用之多個(gè)filter的執(zhí)行順序以及配置方式

    這篇文章主要介紹了springboot使用之多個(gè)filter的執(zhí)行順序以及配置方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java集合系列之ArrayList源碼分析

    Java集合系列之ArrayList源碼分析

    這篇文章主要為大家詳細(xì)介紹了Java集合系列之ArrayList源碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Spring AOP之@Around,@AfterReturning使用、切不進(jìn)去的解決方案

    Spring AOP之@Around,@AfterReturning使用、切不進(jìn)去的解決方案

    這篇文章主要介紹了Spring AOP之@Around,@AfterReturning使用、切不進(jìn)去的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05

最新評論