国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

數(shù)據(jù)結(jié)構(gòu):圖文詳解單鏈表的各種操作(頭插法,尾插法,任意位置插入,刪除節(jié)點,查詢節(jié)點,求鏈表的長度,清空鏈表)

這篇具有很好參考價值的文章主要介紹了數(shù)據(jù)結(jié)構(gòu):圖文詳解單鏈表的各種操作(頭插法,尾插法,任意位置插入,刪除節(jié)點,查詢節(jié)點,求鏈表的長度,清空鏈表)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

數(shù)據(jù)結(jié)構(gòu):圖文詳解單鏈表的各種操作(頭插法,尾插法,任意位置插入,刪除節(jié)點,查詢節(jié)點,求鏈表的長度,清空鏈表),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表,算法,java,學(xué)習(xí),原理,實現(xiàn)


目錄

?一.什么是鏈表

二.鏈表的實現(xiàn)

節(jié)點的插入

頭插法

尾插法

指定位置插入

節(jié)點的刪除

刪除第一次出現(xiàn)的關(guān)鍵字節(jié)點

刪除所有關(guān)鍵字節(jié)點

節(jié)點的查找

鏈表的清空

鏈表的長度


前言:在上一篇文章中,我們認(rèn)識了線性數(shù)據(jù)結(jié)構(gòu)中的順序表,而本篇文章則是介紹線性數(shù)據(jù)結(jié)構(gòu)中的另一個結(jié)構(gòu)——鏈表

想要了解順序表相關(guān)操作的知識可以查看這篇文章:
圖文詳解順序表的各種操作

數(shù)據(jù)結(jié)構(gòu):圖文詳解單鏈表的各種操作(頭插法,尾插法,任意位置插入,刪除節(jié)點,查詢節(jié)點,求鏈表的長度,清空鏈表),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表,算法,java,學(xué)習(xí),原理,實現(xiàn)

?一.什么是鏈表

鏈表是一種數(shù)據(jù)結(jié)構(gòu),它由一系列節(jié)點(node)構(gòu)成,每個節(jié)點中包含了數(shù)據(jù)(data)和指向下一個節(jié)點的指針(next)。鏈表中的節(jié)點可以在內(nèi)存中任何位置,它們通過指針鏈接在一起,形成一個鏈?zhǔn)浇Y(jié)構(gòu)。鏈表相對于數(shù)組的優(yōu)點在于它可以動態(tài)地增加、刪除節(jié)點,而不需要移動大量的數(shù)據(jù)。鏈表的缺點是訪問元素時需要遍歷整個鏈表,效率較低。

二.鏈表的實現(xiàn)

鏈表由不同的節(jié)點相互串起來,每個節(jié)點由倆個部分組成,一個是數(shù)據(jù)域,用來放具體是數(shù)值內(nèi)容,另一個是指針域,用來存放下一個節(jié)點的地址信息,彼此之間就像是用鏈條串起來一樣,就像下圖展示的這樣,所以稱之為鏈表。

數(shù)據(jù)結(jié)構(gòu):圖文詳解單鏈表的各種操作(頭插法,尾插法,任意位置插入,刪除節(jié)點,查詢節(jié)點,求鏈表的長度,清空鏈表),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表,算法,java,學(xué)習(xí),原理,實現(xiàn)

對于上圖這樣的結(jié)構(gòu),我們可以如下定義一個鏈表,將鏈表作為一個類,并且在這個類中有一個內(nèi)部類專門存儲每一個節(jié)點的數(shù)據(jù)結(jié)構(gòu),還有一個頭節(jié)點單獨定義來記錄鏈表的起始位置

public class MyLinkList{
    //節(jié)點的數(shù)據(jù)結(jié)構(gòu)
    static class ListNode{
        public int val;
        public ListNode next;
    }
    //鏈表的屬性
    public ListNode head;//記錄鏈表的第一個元素:頭節(jié)點
}

對一個鏈表,它應(yīng)該完成以下這些功能,我們將這些功能抽象出一個接口,然后通過這個接口去實現(xiàn)一個真正的鏈表

public interface Ilist {
    //頭插
    void addFirst(int data);
    //尾插
    void addLast(int data);
    //指定插入
    void addIndex(int index,int data);
    //查詢是否存在
    boolean contains(int key);
    //刪除節(jié)點
    void remove(int key);
    //刪除所有與目標(biāo)相同的節(jié)點
    void removeAllKey(int key);
    //得到鏈表的長度
    int size();
    //清空鏈表
    void clear();
    //輸出鏈表的所有信息
    void display();
}

節(jié)點的插入

我們將節(jié)點的插入分為三種:

  • 頭部插入:將節(jié)點插入到鏈表的最前面
  • 尾部插入:將節(jié)點插入到鏈表的最后面
  • 指定位置插入:將節(jié)點插入到鏈表的中間

頭插法

如圖,我們準(zhǔn)備對于剛才的鏈表進(jìn)行插入

數(shù)據(jù)結(jié)構(gòu):圖文詳解單鏈表的各種操作(頭插法,尾插法,任意位置插入,刪除節(jié)點,查詢節(jié)點,求鏈表的長度,清空鏈表),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表,算法,java,學(xué)習(xí),原理,實現(xiàn)

我們這里分倆個步驟進(jìn)行操作:

  1. 將新節(jié)點指向頭節(jié)點
  2. 更新頭節(jié)點的位置

我們更改要添加節(jié)點的指針域,讓它指向新的節(jié)點?

數(shù)據(jù)結(jié)構(gòu):圖文詳解單鏈表的各種操作(頭插法,尾插法,任意位置插入,刪除節(jié)點,查詢節(jié)點,求鏈表的長度,清空鏈表),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表,算法,java,學(xué)習(xí),原理,實現(xiàn)

在指向完成后,我們新添加的節(jié)點就已經(jīng)是鏈表的第一個節(jié)點了,所以我們要更新頭節(jié)點的信息,記錄新節(jié)點才是第一個節(jié)點

數(shù)據(jù)結(jié)構(gòu):圖文詳解單鏈表的各種操作(頭插法,尾插法,任意位置插入,刪除節(jié)點,查詢節(jié)點,求鏈表的長度,清空鏈表),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表,算法,java,學(xué)習(xí),原理,實現(xiàn)

這樣我們就完成了頭部插入節(jié)點,具體代碼實現(xiàn)如下,先生成一個節(jié)點,然后按照上面圖示的思路進(jìn)行操作

    //頭插法
    public void addFirst(int data) {
        ListNode newNode = new ListNode(data);
        newNode.next = this.head;
        this.head = newNode;
    }

尾插法

尾插法是將節(jié)點插入到鏈表的末尾,但是我們是并沒有記錄末尾節(jié)點的位置的,所以如果要使用尾插法的話就需要先找到尾部節(jié)點。那我們只需要根據(jù)最后一個節(jié)點特征進(jìn)行遍歷找到最后一個節(jié)點就可以了,而最后一個節(jié)點最大的特征就是,它只有數(shù)據(jù)域內(nèi)有信息,指針域里面是空。如果鏈表為空的話,那我們直接在頭節(jié)點之后添加就可以,整體流程如下:

數(shù)據(jù)結(jié)構(gòu):圖文詳解單鏈表的各種操作(頭插法,尾插法,任意位置插入,刪除節(jié)點,查詢節(jié)點,求鏈表的長度,清空鏈表),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表,算法,java,學(xué)習(xí),原理,實現(xiàn)

數(shù)據(jù)結(jié)構(gòu):圖文詳解單鏈表的各種操作(頭插法,尾插法,任意位置插入,刪除節(jié)點,查詢節(jié)點,求鏈表的長度,清空鏈表),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表,算法,java,學(xué)習(xí),原理,實現(xiàn)

整體代碼實現(xiàn)如下,先判斷是否為空鏈表,為空就直接在頭節(jié)點之后添加,不為空就遍歷找到最后一個節(jié)點,然后更改指針域內(nèi)容,添加新節(jié)點

    //尾插法
    public void addLast(int data) {
        //當(dāng)鏈表為空的時候,直接將節(jié)點插入到頭節(jié)點的位置
        ListNode newNode = new ListNode(data);
        if (head == null) {
            head = newNode;
        }else{
            ListNode cur = head;
            while (cur.next != null){
                cur = cur.next;
            }
            //找到最后一個節(jié)點
            cur.next = newNode;
            //newNode.next = null;//默認(rèn)新節(jié)點的指針域為空,所以這里可以不寫這一行代碼
        }
    }

指定位置插入

在中間位置插入是最麻煩的,原因就在于我們不能立馬獲取到想要插入位置的信息,我們需要先進(jìn)行判斷,如果輸入位置是在最前面,那就可以使用頭插,如果是最后就使用尾插。在得知輸入位置在鏈表中間后,我們就需要先找到這個位置前后的節(jié)點的信息,如下圖,假如我們要插入的位置是第三個位置,那就需要知道第二個位置和第三個位置的信息,當(dāng)我們找到了后可以分倆布進(jìn)行操作(順序不能更改):

  1. 先讓節(jié)點指向后面的節(jié)點
  2. 再讓前面的節(jié)點指向插入節(jié)點

數(shù)據(jù)結(jié)構(gòu):圖文詳解單鏈表的各種操作(頭插法,尾插法,任意位置插入,刪除節(jié)點,查詢節(jié)點,求鏈表的長度,清空鏈表),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表,算法,java,學(xué)習(xí),原理,實現(xiàn)

第一步,讓插入節(jié)點指向后面的節(jié)點

數(shù)據(jù)結(jié)構(gòu):圖文詳解單鏈表的各種操作(頭插法,尾插法,任意位置插入,刪除節(jié)點,查詢節(jié)點,求鏈表的長度,清空鏈表),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表,算法,java,學(xué)習(xí),原理,實現(xiàn)

第二步,將前面的節(jié)點指向插入的節(jié)點

數(shù)據(jù)結(jié)構(gòu):圖文詳解單鏈表的各種操作(頭插法,尾插法,任意位置插入,刪除節(jié)點,查詢節(jié)點,求鏈表的長度,清空鏈表),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表,算法,java,學(xué)習(xí),原理,實現(xiàn)

我們可以通過代碼來實現(xiàn)這段過程,先是進(jìn)行合法性的判斷,然后是針對性的插入

    //指定位置添加
    public void addIndex(int index, int data) {
        if(index < 0 || index > size()) {
            //這里不一定非要拋出自定義異常,大家可以更具喜好自行設(shè)置
            throw new IndexException("index不合法: "+index);
        }
        //如果輸入的位置在最前面就進(jìn)行頭插
        if (index == 0)
            addFirst(data);
        //如果輸入的位置在鏈表最后就進(jìn)行尾插
        if (index == size())
            addLast(data);
        //輸入位置在中間,就先找到這個節(jié)點的位置
        ListNode cur = searchPrevIndex(index);
        ListNode newNode = new ListNode(data);
        //這倆步是順序非常重要
        newNode.next = cur.next;
        cur.next = newNode;
    }
    //找到位置對應(yīng)的節(jié)點
    private ListNode searchPrevIndex(int index) {
        ListNode cur = head;
        int count = 0;
        while (count != index-2) {
            cur = cur.next;
            count++;
        }
        return cur;
    }

節(jié)點的刪除

對于節(jié)點是刪除相當(dāng)于插入簡單了很多,我們依舊是分為倆種方式進(jìn)行刪除,一種是只刪除第一次出現(xiàn)的節(jié)點,另一種是刪除全部想要刪除的節(jié)點。

刪除第一次出現(xiàn)的關(guān)鍵字節(jié)點

我們依舊是用初始的鏈表進(jìn)行舉例,假如我們想要刪除第三個節(jié)點

數(shù)據(jù)結(jié)構(gòu):圖文詳解單鏈表的各種操作(頭插法,尾插法,任意位置插入,刪除節(jié)點,查詢節(jié)點,求鏈表的長度,清空鏈表),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表,算法,java,學(xué)習(xí),原理,實現(xiàn)

第一步,我們直接更改要刪除節(jié)點的前面節(jié)點的指針域,讓它指向要刪除的節(jié)點后的節(jié)點

數(shù)據(jù)結(jié)構(gòu):圖文詳解單鏈表的各種操作(頭插法,尾插法,任意位置插入,刪除節(jié)點,查詢節(jié)點,求鏈表的長度,清空鏈表),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表,算法,java,學(xué)習(xí),原理,實現(xiàn)

第二步,我們將要刪除的節(jié)點的指針域置為空

數(shù)據(jù)結(jié)構(gòu):圖文詳解單鏈表的各種操作(頭插法,尾插法,任意位置插入,刪除節(jié)點,查詢節(jié)點,求鏈表的長度,清空鏈表),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表,算法,java,學(xué)習(xí),原理,實現(xiàn)

這倆步的順序同樣也不能錯,因為一旦我們先將要刪除的節(jié)點的指針域置為空,我們就無法再找到后面的節(jié)點了,鏈表就相當(dāng)于斷開了

我們封裝一個函數(shù)用來找到要刪除節(jié)點的前一個節(jié)點,然后通過它再刪除目標(biāo)節(jié)點

    //刪除第一個關(guān)鍵字
    public void remove(int key) {
        if (head == null)
            return;
        if (head.val == key){
            head = head.next;
            return;
        }
        //查找val等于key的節(jié)點
        ListNode cur = findKey(key);
        if (cur == null){
            System.out.println("查無此元素,無法刪除");
            return;
        }
        ListNode delNode = cur.next;
        cur.next = delNode.next;
        //cur.next =cur.next.next;
    }
    //找到要刪除的元素的前一個節(jié)點
    private ListNode findKey(int key){
        ListNode cur = head;
        while (cur.next != null){
            if (cur.next.val != key) {
                cur = cur.next;
            }else{
                return cur;
            }
        }
        return null;
    }

刪除所有關(guān)鍵字節(jié)點

與剛才不同的是,刪除一個節(jié)點是先找到前驅(qū)節(jié)點,然后通過這個前驅(qū)節(jié)點進(jìn)行操作,而要刪除所有的關(guān)鍵字節(jié)點,則是對整個鏈表進(jìn)行遍歷,一旦是關(guān)鍵字,那我們就進(jìn)行覆蓋刪除,這里就不再畫圖了,畢竟整個流程相當(dāng)于多執(zhí)行幾次單個刪除操作

    //刪除所有的關(guān)鍵字
    public void removeAllKey(int key) {
        if(head == null) {
            return;
        }
        ListNode prev = head;
        ListNode cur = head.next;
        
        while (cur != null) {
            if(cur.val == key) {
                prev.next = cur.next;
                cur = cur.next;
            }else {
                prev = cur;
                cur = cur.next;
            }
        }
        //除了頭節(jié)點都刪除完成了
        if(head.val == key) {
            head = head.next;
        }
    }

節(jié)點的查找

節(jié)點的查找就是遍歷整個鏈表,如果找到就返回true,沒有找到就返回false

    //查找是否存在
    public boolean contains(int key) {
        ListNode cur = head;
        while (cur != null){
            if (cur.val == key)
                return true;
            cur = cur.next;
        }
        return false;
    }

鏈表的清空

當(dāng)鏈表的頭節(jié)點為空,我們就視為鏈表被清空了

    //清空鏈表
    public void clear() {
        head = null;
    }

鏈表的長度

遍歷整個鏈表,使用計算器進(jìn)行累加記錄節(jié)點個數(shù),然后返回就可以

    //求鏈表的長度
    public int size() {
        int count =0;
        ListNode cur = head;
        while (cur != null){
            count++;
            cur = cur.next;
        }
        return count;
    }



?數(shù)據(jù)結(jié)構(gòu):圖文詳解單鏈表的各種操作(頭插法,尾插法,任意位置插入,刪除節(jié)點,查詢節(jié)點,求鏈表的長度,清空鏈表),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表,算法,java,學(xué)習(xí),原理,實現(xiàn)?本次的分享就到此為止了,希望我的分享能給您帶來幫助,也歡迎大家三連支持,你們的點贊就是博主更新最大的動力!數(shù)據(jù)結(jié)構(gòu):圖文詳解單鏈表的各種操作(頭插法,尾插法,任意位置插入,刪除節(jié)點,查詢節(jié)點,求鏈表的長度,清空鏈表),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表,算法,java,學(xué)習(xí),原理,實現(xiàn)如有不同意見,歡迎評論區(qū)積極討論交流,讓我們一起學(xué)習(xí)進(jìn)步!數(shù)據(jù)結(jié)構(gòu):圖文詳解單鏈表的各種操作(頭插法,尾插法,任意位置插入,刪除節(jié)點,查詢節(jié)點,求鏈表的長度,清空鏈表),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表,算法,java,學(xué)習(xí),原理,實現(xiàn)有相關(guān)問題也可以私信博主,評論區(qū)和私信都會認(rèn)真查看的,我們下次再見數(shù)據(jù)結(jié)構(gòu):圖文詳解單鏈表的各種操作(頭插法,尾插法,任意位置插入,刪除節(jié)點,查詢節(jié)點,求鏈表的長度,清空鏈表),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表,算法,java,學(xué)習(xí),原理,實現(xiàn)文章來源地址http://www.zghlxwxcb.cn/news/detail-754855.html

到了這里,關(guān)于數(shù)據(jù)結(jié)構(gòu):圖文詳解單鏈表的各種操作(頭插法,尾插法,任意位置插入,刪除節(jié)點,查詢節(jié)點,求鏈表的長度,清空鏈表)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【數(shù)據(jù)結(jié)構(gòu)】單鏈表的實現(xiàn)

    【數(shù)據(jù)結(jié)構(gòu)】單鏈表的實現(xiàn)

    ??個人主頁:平凡的小蘇 ??學(xué)習(xí)格言:別人可以拷貝我的模式,但不能拷貝我不斷往前的激情 ??C語言專欄:https://blog.csdn.net/vhhhbb/category_12174730.html ??數(shù)據(jù)結(jié)構(gòu)專欄:https://blog.csdn.net/vhhhbb/category_12211053.html ? ? ? ? 家人們更新不易,你們的??點贊??和?關(guān)注?真的對我

    2023年04月09日
    瀏覽(93)
  • 【數(shù)據(jù)結(jié)構(gòu)】-- 單鏈表的實現(xiàn)

    【數(shù)據(jù)結(jié)構(gòu)】-- 單鏈表的實現(xiàn)

    在前面我們學(xué)習(xí)了順序表,順序表在數(shù)組的基礎(chǔ)上提供了很多現(xiàn)成的方法,方便了我們對數(shù)據(jù)的管理,但是我們也發(fā)現(xiàn)順序表有著許多不足: 在處理大型的數(shù)據(jù)時,需要頻繁的增容且在中間刪除或插入數(shù)據(jù)時需要遍歷順序表,這些性質(zhì)導(dǎo)致了順序表的 效率較低 。這時我們就

    2024年04月27日
    瀏覽(110)
  • 【數(shù)據(jù)結(jié)構(gòu)—單鏈表的實現(xiàn)】

    【數(shù)據(jù)結(jié)構(gòu)—單鏈表的實現(xiàn)】

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 目錄 前言 1. 鏈表的概念及結(jié)構(gòu) 2. 單鏈表的實現(xiàn) 2.1單鏈表頭文件——功能函數(shù)的定義 2.2單鏈表源文件——功能函數(shù)的實現(xiàn) 2.3 單鏈表源文件——功能的測試 3.具體的理解操作圖 4. 鏈表的分類 總結(jié) 世上

    2024年02月05日
    瀏覽(93)
  • 【(數(shù)據(jù)結(jié)構(gòu))— 單鏈表的實現(xiàn)】

    【(數(shù)據(jù)結(jié)構(gòu))— 單鏈表的實現(xiàn)】

    概念: 鏈表是?種 物理存儲結(jié)構(gòu)上非連續(xù)、 非順序的存儲結(jié)構(gòu),數(shù)據(jù)元素的 邏輯順序 是通過鏈表中的 指針鏈接 次序?qū)崿F(xiàn)的 。 鏈表的結(jié)構(gòu)跟???廂相似,淡季時?次的?廂會相應(yīng)減少,旺季時?次的?廂會額外增加?節(jié)。只需要將???的某節(jié)?廂去掉/加上,不會影響

    2024年02月08日
    瀏覽(101)
  • 數(shù)據(jù)結(jié)構(gòu)--單鏈表的定義

    數(shù)據(jù)結(jié)構(gòu)--單鏈表的定義

    單鏈表的定義(如何用代碼實現(xiàn)) 優(yōu)點:不要求大片連續(xù)空間,改變?nèi)萘糠奖?缺點:不可隨機存取,要耗費一定空間存放指針 為了方便 我們經(jīng)常使用 typedef t y p e d e f 數(shù)據(jù)類型 別名 color{purple}typedef 數(shù)據(jù)類型 別名 t y p e d e f 數(shù)據(jù)類型 別名 代碼一: 代碼二: 代碼一與代碼二是

    2024年02月11日
    瀏覽(21)
  • 【數(shù)據(jù)結(jié)構(gòu)】單鏈表的層層實現(xiàn)!! !

    【數(shù)據(jù)結(jié)構(gòu)】單鏈表的層層實現(xiàn)!! !

    關(guān)注小莊 頓頓解饞(●’?’●) 上篇回顧 我們上篇學(xué)習(xí)了本質(zhì)為數(shù)組的數(shù)據(jù)結(jié)構(gòu)—順序表,順序表支持下標(biāo)隨機訪問而且高速緩存命中率高,然而可能造成空間的浪費,同時增加數(shù)據(jù)時多次移動會造成效率低下,那有什么解決之法呢?這就得引入我們鏈表這種數(shù)據(jù)結(jié)構(gòu) 概念

    2024年03月12日
    瀏覽(1048)
  • 【數(shù)據(jù)結(jié)構(gòu)】單鏈表的簡單實現(xiàn)

    【數(shù)據(jù)結(jié)構(gòu)】單鏈表的簡單實現(xiàn)

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 單鏈表是一種鏈?zhǔn)酱嫒〉臄?shù)據(jù)結(jié)構(gòu),用一組地址任意的存儲單元存放線性表中的數(shù)據(jù)元素。鏈表中的數(shù)據(jù)是以結(jié)點來表示的,每個結(jié)點的構(gòu)成:元素(數(shù)據(jù)元素的映象) + 指針(指示后繼元素存儲位置),元

    2024年02月04日
    瀏覽(94)
  • 數(shù)據(jù)結(jié)構(gòu)--單鏈表的插入&刪除

    數(shù)據(jù)結(jié)構(gòu)--單鏈表的插入&刪除

    目標(biāo) 單鏈表的插入(位插、前插、后插) 單鏈表的刪除 按為序插入(帶頭結(jié)點) ListInsert(L,i,e):插入操作。在表L中的第i個位置上插入指定元素e。 思路:找到第i-1個結(jié)點,將新結(jié)點插入其后 代碼實現(xiàn) 時間復(fù)雜度 最好時間復(fù)雜度 O(1) 最壞時間復(fù)雜度 O(1) 平均時間復(fù)雜度 O(1) 按位

    2024年02月07日
    瀏覽(30)
  • 【數(shù)據(jù)結(jié)構(gòu)】單鏈表的定義和操作

    【數(shù)據(jù)結(jié)構(gòu)】單鏈表的定義和操作

    目錄 1.單鏈表的定義 2.單鏈表的創(chuàng)建和初始化 3.單鏈表的插入節(jié)點操作 4.單鏈表的刪除節(jié)點操作 5.單鏈表的查找節(jié)點操作 6.單鏈表的更新節(jié)點操作 7.完整代碼 ??嗨!我是Filotimo__??。很高興與大家相識,希望我的博客能對你有所幫助。 ??本文由Filotimo__??原創(chuàng),首發(fā)于CS

    2024年02月02日
    瀏覽(93)
  • 【數(shù)據(jù)結(jié)構(gòu)】實現(xiàn)單鏈表的增刪查

    【數(shù)據(jù)結(jié)構(gòu)】實現(xiàn)單鏈表的增刪查

    鏈表類和節(jié)點類的定義: 圖解: 從中間位置插入: 圖解:假定index=2 尾插: 刪除當(dāng)前線性表中索引為index的元素,返回刪除的元素值: 圖解: 刪除當(dāng)前線性表中第一個值為element的元素: 刪除當(dāng)前線性表中所有值為element的元素: 將當(dāng)前線性表中index位置的元素替換為eleme

    2024年02月14日
    瀏覽(916)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包