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

數(shù)據(jù)結(jié)構(gòu) 模擬實(shí)現(xiàn)LinkedList單向不循環(huán)鏈表

這篇具有很好參考價(jià)值的文章主要介紹了數(shù)據(jù)結(jié)構(gòu) 模擬實(shí)現(xiàn)LinkedList單向不循環(huán)鏈表。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

一、鏈表的簡單介紹

二、鏈表的接口

三、鏈表的方法實(shí)現(xiàn)

(1)display方法

(2)size得到單鏈表的長度方法

(3)addFirst頭插方法

(4)addLast尾插方法

(5)addIndex指定位置插入方法

(6)contains方法

(7)remove刪除第一個(gè)key值節(jié)點(diǎn)的方法

(8)removeAllKey刪除所有值為key的方法

(9)clear方法

四、最終代碼


一、鏈表的簡單介紹

概念:鏈表是一種物理存儲結(jié)構(gòu)不連續(xù),邏輯上是連續(xù)的;鏈表類似現(xiàn)實(shí)中的火車,一節(jié)車廂連著一節(jié)車廂,而鏈表是通過鏈表之間的引用進(jìn)行連接,構(gòu)成一節(jié)一節(jié)的數(shù)據(jù)結(jié)構(gòu)。如圖:

數(shù)據(jù)結(jié)構(gòu) 模擬實(shí)現(xiàn)LinkedList單向不循環(huán)鏈表,數(shù)據(jù)結(jié)構(gòu),鏈表,java數(shù)據(jù)結(jié)構(gòu) 模擬實(shí)現(xiàn)LinkedList單向不循環(huán)鏈表,數(shù)據(jù)結(jié)構(gòu),鏈表,java


二、鏈表的接口

代碼如下:

public interface Ilist {
    //頭插法
    void addFirst(int data);
    //尾插法
    void addLast(int data);
    //任意位置插入,第一個(gè)數(shù)據(jù)節(jié)點(diǎn)為0號下標(biāo)
    void addIndex(int index,int data);
    //查找是否包含關(guān)鍵字key是否在單鏈表當(dāng)中
    boolean contains(int key);
    //刪除第一次出現(xiàn)關(guān)鍵字為key的節(jié)點(diǎn)
    void remove(int key);
    //刪除所有值為key的節(jié)點(diǎn)
    void removeAllKey(int key);
    //得到單鏈表的長度
    int size();
    void clear();
    void display();
}

三、鏈表的方法實(shí)現(xiàn)

創(chuàng)建一個(gè)類,實(shí)現(xiàn)接口,重寫方法,鏈表中的方法都在里面實(shí)現(xiàn)。類里面有鏈表類,也是內(nèi)部類,有val值,next域,還有記錄第一個(gè)節(jié)點(diǎn)的頭結(jié)點(diǎn),代碼如下:

public class MyLinkedList implements Ilist{

    public ListNode head;

    static class ListNode{
        int val;
        ListNode next;

        public ListNode(int val) {
            this.val = val;
        }
    }
}

我們先創(chuàng)建一個(gè)方法,方法里面會(huì)創(chuàng)建幾個(gè)節(jié)點(diǎn),代碼如下:

public void createList() {
        ListNode node1 = new ListNode(12);
        ListNode node2 = new ListNode(23);
        ListNode node3 = new ListNode(34);
        ListNode node4 = new ListNode(45);
        ListNode node5 = new ListNode(56);
        node1.next = node2;
        node2.next = node3;
        node3.next = node4;
        node4.next = node5;
        this.head = node1;
    }

調(diào)用這個(gè)方法,就會(huì)創(chuàng)建出含有5個(gè)節(jié)點(diǎn)的鏈表,在test類里面創(chuàng)建main方法,調(diào)用此方法后的結(jié)果,結(jié)果如圖:

數(shù)據(jù)結(jié)構(gòu) 模擬實(shí)現(xiàn)LinkedList單向不循環(huán)鏈表,數(shù)據(jù)結(jié)構(gòu),鏈表,java

(1)display方法

此方法可以顯示鏈表中所有元素,也就是遍歷一遍鏈表,打印val值,代碼如下:

public void display() {
        ListNode cur = head;
        while (cur != null) {
            System.out.print(cur.val + " ");
            cur = cur.next;
        }
        System.out.println();
    }

調(diào)用該方法執(zhí)行結(jié)果如下:
數(shù)據(jù)結(jié)構(gòu) 模擬實(shí)現(xiàn)LinkedList單向不循環(huán)鏈表,數(shù)據(jù)結(jié)構(gòu),鏈表,java

(2)size得到單鏈表的長度方法

要得到鏈表的長度,就要遍歷一遍鏈表,定義一個(gè)變量進(jìn)行統(tǒng)計(jì)個(gè)數(shù),代碼如下:

public int size() {
        int count = 0;
        ListNode cur = head;
        while (cur != null) {
            count++;
            cur = cur.next;
        }
        return count;
    }

執(zhí)行結(jié)果:

數(shù)據(jù)結(jié)構(gòu) 模擬實(shí)現(xiàn)LinkedList單向不循環(huán)鏈表,數(shù)據(jù)結(jié)構(gòu),鏈表,java

(3)addFirst頭插方法

頭插就要把要插入的節(jié)點(diǎn)當(dāng)做頭結(jié)點(diǎn),要插入的元素next域指向當(dāng)前頭結(jié)點(diǎn),再把頭結(jié)點(diǎn)定成插入的元素。

代碼:

public void addFirst(int data) {
        ListNode node = new ListNode(data);
        if(this.head == null) {
            this.head = node;
        } else {
            node.next = this.head;
            this.head = node;
        }
    }

調(diào)用此方法,多條語句后的執(zhí)行結(jié)果如下:
數(shù)據(jù)結(jié)構(gòu) 模擬實(shí)現(xiàn)LinkedList單向不循環(huán)鏈表,數(shù)據(jù)結(jié)構(gòu),鏈表,java

(4)addLast尾插方法

尾插就是要在鏈表的尾節(jié)點(diǎn)后插入節(jié)點(diǎn),代碼如下:

public void addLast(int data) {
        ListNode node = new ListNode(data);
        if(this.head == null) {
            this.head = node;
        } else {
            ListNode cur = this.head;
            while (cur.next != null) {
                cur = cur.next;
            }
            cur.next = node;
        }
    }

執(zhí)行結(jié)果如下:

數(shù)據(jù)結(jié)構(gòu) 模擬實(shí)現(xiàn)LinkedList單向不循環(huán)鏈表,數(shù)據(jù)結(jié)構(gòu),鏈表,java

(5)addIndex指定位置插入方法

我們這里規(guī)定第一個(gè)節(jié)點(diǎn)的位置是0,第二個(gè)節(jié)點(diǎn)位置為1,依次往后推,我們要指定某一位置插入節(jié)點(diǎn),先要檢查插入位置是否合法,不合法拋出異常;合法在指定位置插入節(jié)點(diǎn),如果指定位置是0,就是頭插,指定位置是節(jié)點(diǎn)個(gè)數(shù)的size,就是尾插;中間位置,我們要找到指定位置的前一個(gè)節(jié)點(diǎn),插入節(jié)點(diǎn)的next域指向前一個(gè)節(jié)點(diǎn)的next節(jié)點(diǎn),前一個(gè)節(jié)點(diǎn)的next域指向插入節(jié)點(diǎn),代碼如下:

    public void addIndex(int index, int data) {
        try {
            if(index < 0 || index > size()) {
                throw new IndexException("下標(biāo)異常,下標(biāo):" + index);
            } else {
                if(index == 0) {
                    //頭插
                    addFirst(data);
                    return;
                }
                if (index == size()) {
                    //尾插
                    addLast(data);
                    return;
                }
                ListNode node = new ListNode(data);
                ListNode cur = searchPrev(index);
                node.next = cur.next;
                cur.next = node;
            }
        } catch (IndexException e) {
            e.printStackTrace();
        }
    }
    //找到鏈表前一個(gè)的位置
    private ListNode searchPrev(int index) {
        ListNode cur = this.head;
        int count = 0;
        while (count != index - 1) {
            cur = cur.next;
            count++;
        }
        return cur;
    }

public class IndexException extends RuntimeException{
    public IndexException(String e) {
        super(e);
    }
}

(6)contains方法

查找是否包含關(guān)鍵字key是否在單鏈表當(dāng)中,遍歷一遍鏈表,有該元素就返回true,沒有就返回false,代碼如下:

public boolean contains(int key) {
        ListNode cur = this.head;
        while (cur != null) {
            if(cur.val == key) {
                return true;
            }
            cur = cur.next;
        }
        return false;
    }

(7)remove刪除第一個(gè)key值節(jié)點(diǎn)的方法

刪除一個(gè)節(jié)點(diǎn),先要判斷該鏈表為不為空,為空就退出;不為空,看要?jiǎng)h的節(jié)點(diǎn)是不是頭結(jié)點(diǎn),是頭結(jié)點(diǎn)就直接把頭結(jié)點(diǎn)改成頭結(jié)點(diǎn)的next域;要?jiǎng)h除的節(jié)點(diǎn)可能在中間,就要扎到要?jiǎng)h除節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn),把前一個(gè)節(jié)點(diǎn)的next域指向要?jiǎng)h除節(jié)點(diǎn)的next域就好了,代碼如下:

public void remove(int key) {
        if(this.head == null) {
            //一個(gè)節(jié)點(diǎn)都沒有,無法刪除
            return;
        }
        if(this.head.val == key) {
            this.head = this.head.next;
            return;
        }
        ListNode cur = findPrev(key);
        if(cur == null) {
            System.out.println("沒有要?jiǎng)h除的點(diǎn)");
        } else {
            ListNode del = cur.next;
            cur.next = del.next;
        }
    }

    private ListNode findPrev(int key) {
        ListNode cur = this.head;
        while (cur.next != null) {
            if(cur.next.val == key) {
                break;
            }
            cur = cur.next;
        }
        return cur == this.head ? null : cur;
    }

執(zhí)行結(jié)果如下:

數(shù)據(jù)結(jié)構(gòu) 模擬實(shí)現(xiàn)LinkedList單向不循環(huán)鏈表,數(shù)據(jù)結(jié)構(gòu),鏈表,java

(8)removeAllKey刪除所有值為key的方法

如果頭結(jié)點(diǎn)是空的,就不用進(jìn)行下面操作,直接返回。

兩個(gè)節(jié)點(diǎn),一個(gè)的前節(jié)點(diǎn),一個(gè)是前節(jié)點(diǎn)的后一個(gè)節(jié)點(diǎn),遍歷后一個(gè)節(jié)點(diǎn),判斷后一個(gè)節(jié)點(diǎn)的val值是不是key,是key就把前一個(gè)節(jié)點(diǎn)的next域指向后一個(gè)節(jié)點(diǎn)的next域,后一個(gè)節(jié)點(diǎn)向后移,沒有命中后一個(gè)節(jié)點(diǎn)==key這條件,前一個(gè)節(jié)點(diǎn)和后一個(gè)節(jié)點(diǎn)都要往后移動(dòng)一步。

最后還要判斷頭結(jié)點(diǎn)的val值是否等于key值,是就要把head標(biāo)記成head的next域。

代碼入如下:

public void removeAllKey(int key) {
        if(this.head == null) {
            return;
        }
        ListNode prev = this.head;
        ListNode cur = this.head.next;
        while (cur != null) {
            if(cur.val == key) {
                prev.next =cur.next;
                cur = cur.next;
            } else {
                cur = cur.next;
                prev = prev.next;
            }
        }
        if(this.head.val == key) {
            this.head = this.head.next;
        }
    }

執(zhí)行結(jié)果如下:

數(shù)據(jù)結(jié)構(gòu) 模擬實(shí)現(xiàn)LinkedList單向不循環(huán)鏈表,數(shù)據(jù)結(jié)構(gòu),鏈表,java

(9)clear方法

清除所有節(jié)點(diǎn),有兩種解決方案,第一種是直接把頭結(jié)點(diǎn)設(shè)為空,這種方法比較暴力;第二種是把每個(gè)節(jié)點(diǎn)的next域設(shè)為空,同時(shí)val也要設(shè)為空,因?yàn)檫@里的val類型是int,所以就設(shè)置不了空了,最后再把head節(jié)點(diǎn)設(shè)為空,代碼如下:

 public void clear() {
        ListNode cur = this.head;
        while (cur != null) {
            ListNode curNext = cur.next;
            cur.next = null;
            cur = curNext;
        }
        head = null;
    }

執(zhí)行結(jié)果如下:

數(shù)據(jù)結(jié)構(gòu) 模擬實(shí)現(xiàn)LinkedList單向不循環(huán)鏈表,數(shù)據(jù)結(jié)構(gòu),鏈表,java文章來源地址http://www.zghlxwxcb.cn/news/detail-773316.html


四、最終代碼

public class MyLinkedList implements Ilist{

    public ListNode head;

    static class ListNode{
        int val;
        ListNode next;

        public ListNode(int val) {
            this.val = val;
        }
    }

    public void createList() {
        ListNode node1 = new ListNode(12);
        ListNode node2 = new ListNode(23);
        ListNode node3 = new ListNode(34);
        ListNode node4 = new ListNode(45);
        ListNode node5 = new ListNode(56);
        node1.next = node2;
        node2.next = node3;
        node3.next = node4;
        node4.next = node5;
        this.head = node1;
    }

    @Override
    public void addFirst(int data) {
        ListNode node = new ListNode(data);
        if(this.head == null) {
            this.head = node;
        } else {
            node.next = this.head;
            this.head = node;
        }
    }

    @Override
    public void addLast(int data) {
        ListNode node = new ListNode(data);
        if(this.head == null) {
            this.head = node;
        } else {
            ListNode cur = this.head;
            while (cur.next != null) {
                cur = cur.next;
            }
            cur.next = node;
        }
    }

    @Override
    public void addIndex(int index, int data) {
        try {
            if(index < 0 || index > size()) {
                throw new IndexException("下標(biāo)異常,下標(biāo):" + index);
            } else {
                if(index == 0) {
                    //頭插
                    addFirst(data);
                    return;
                }
                if (index == size()) {
                    //尾插
                    addLast(data);
                    return;
                }
                ListNode node = new ListNode(data);
                ListNode cur = searchPrev(index);
                node.next = cur.next;
                cur.next = node;
            }
        } catch (IndexException e) {
            e.printStackTrace();
        }
    }
    //找到鏈表前一個(gè)的位置
    private ListNode searchPrev(int index) {
        ListNode cur = this.head;
        int count = 0;
        while (count != index - 1) {
            cur = cur.next;
            count++;
        }
        return cur;
    }

    @Override
    public boolean contains(int key) {
        ListNode cur = this.head;
        while (cur != null) {
            if(cur.val == key) {
                return true;
            }
            cur = cur.next;
        }
        return false;
    }

    @Override
    public void remove(int key) {
        if(this.head == null) {
            //一個(gè)節(jié)點(diǎn)都沒有,無法刪除
            return;
        }
        if(this.head.val == key) {
            this.head = this.head.next;
            return;
        }
        ListNode cur = findPrev(key);
        if(cur == null) {
            System.out.println("沒有要?jiǎng)h除的點(diǎn)");
        } else {
            ListNode del = cur.next;
            cur.next = del.next;
        }
    }

    private ListNode findPrev(int key) {
        ListNode cur = this.head;
        while (cur.next != null) {
            if(cur.next.val == key) {
                break;
            }
            cur = cur.next;
        }
        return cur == this.head ? null : cur;
    }

    @Override
    public void removeAllKey(int key) {
        if(this.head == null) {
            return;
        }
        ListNode prev = this.head;
        ListNode cur = this.head.next;
        while (cur != null) {
            if(cur.val == key) {
                prev.next =cur.next;
                cur = cur.next;
            } else {
                cur = cur.next;
                prev = prev.next;
            }
        }
        if(this.head.val == key) {
            this.head = this.head.next;
        }
    }

    @Override
    public int size() {
        int count = 0;
        ListNode cur = head;
        while (cur != null) {
            count++;
            cur = cur.next;
        }
        return count;
    }

    @Override
    public void clear() {
        ListNode cur = this.head;
        while (cur != null) {
            ListNode curNext = cur.next;
            cur.next = null;
            cur = curNext;
        }
        head = null;
    }

    @Override
    public void display() {
        ListNode cur = head;
        while (cur != null) {
            System.out.print(cur.val + " ");
            cur = cur.next;
        }
        System.out.println();
    }
}

//自定義異常類
public class IndexException extends RuntimeException{
    public IndexException(String e) {
        super(e);
    }
}

點(diǎn)個(gè)贊再走吧,謝謝謝謝謝!

到了這里,關(guān)于數(shù)據(jù)結(jié)構(gòu) 模擬實(shí)現(xiàn)LinkedList單向不循環(huán)鏈表的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 指針穿梭,數(shù)據(jù)流轉(zhuǎn):探秘C語言實(shí)現(xiàn)單向不帶頭不循環(huán)鏈表

    指針穿梭,數(shù)據(jù)流轉(zhuǎn):探秘C語言實(shí)現(xiàn)單向不帶頭不循環(huán)鏈表

    本篇博客會(huì)講解鏈表的最簡單的一種結(jié)構(gòu):單向+不帶頭+不循環(huán)鏈表,并使用C語言實(shí)現(xiàn)。 鏈表是一種線性的數(shù)據(jù)結(jié)構(gòu),而本篇博客講解的是鏈表中最簡單的一種結(jié)構(gòu),它的一個(gè)結(jié)點(diǎn)的聲明如下: 一個(gè)Node中包含2個(gè)部分:data用來存儲數(shù)據(jù),被稱作“數(shù)據(jù)域”;next用來存儲一個(gè)

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

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

    單鏈表是一種常見的數(shù)據(jù)結(jié)構(gòu),用于存儲一系列的數(shù)據(jù)元素,每個(gè)節(jié)點(diǎn)包含數(shù)據(jù)和指向下一個(gè)節(jié)點(diǎn)的指針。 單鏈表通常用于實(shí)現(xiàn)某些算法或數(shù)據(jù)結(jié)構(gòu),如鏈?zhǔn)角跋蛐?、哈希表、鏈?zhǔn)綏!㈥?duì)列等等。 單鏈表在程序設(shè)計(jì)中的作用不可忽略,是很多基礎(chǔ)算法的核心數(shù)據(jù)結(jié)構(gòu)之一。

    2024年02月07日
    瀏覽(23)
  • 【數(shù)據(jù)結(jié)構(gòu)】單向鏈表實(shí)現(xiàn) 超詳細(xì)

    【數(shù)據(jù)結(jié)構(gòu)】單向鏈表實(shí)現(xiàn) 超詳細(xì)

    目錄 一. 單鏈表的實(shí)現(xiàn) 1.準(zhǔn)備工作及其注意事項(xiàng) 1.1 先創(chuàng)建三個(gè)文件 1.2 注意事項(xiàng):幫助高效記憶和理解 2.鏈表的基本功能接口 2.0 創(chuàng)建一個(gè) 鏈表 2.1 鏈表的 打印 ?3.鏈表的創(chuàng)建新節(jié)點(diǎn)接口 4.鏈表的節(jié)點(diǎn) 插入 功能接口 4.1 尾插接口 4.2 頭插接口 ? ??4.3 指定位置 pos 之前? 插入

    2024年02月19日
    瀏覽(24)
  • 【數(shù)據(jù)結(jié)構(gòu)和算法】使用數(shù)組的結(jié)構(gòu)實(shí)現(xiàn)鏈表(單向或雙向)

    【數(shù)據(jù)結(jié)構(gòu)和算法】使用數(shù)組的結(jié)構(gòu)實(shí)現(xiàn)鏈表(單向或雙向)

    上文我們通過結(jié)構(gòu)體的結(jié)構(gòu)實(shí)現(xiàn)了隊(duì)列 、以及循環(huán)隊(duì)列的實(shí)現(xiàn),我們或許在其他老師的教學(xué)中,只學(xué)到了用結(jié)構(gòu)體的形式來實(shí)現(xiàn)鏈表、隊(duì)列、棧等數(shù)據(jù)結(jié)構(gòu),本文我想告訴你的是,我們 可以使用數(shù)組的結(jié)構(gòu)實(shí)現(xiàn)鏈表、單調(diào)棧、單調(diào)隊(duì)列 目錄 前言 一、用數(shù)組結(jié)構(gòu)的好處 1.數(shù)

    2024年01月20日
    瀏覽(96)
  • 數(shù)據(jù)結(jié)構(gòu)(Java實(shí)現(xiàn))LinkedList與鏈表(上)

    數(shù)據(jù)結(jié)構(gòu)(Java實(shí)現(xiàn))LinkedList與鏈表(上)

    鏈表 邏輯結(jié)構(gòu) 無頭單向非循環(huán)鏈表:結(jié)構(gòu)簡單,一般不會(huì)單獨(dú)用來存數(shù)據(jù)。實(shí)際中更多是作為其他數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),如哈希桶、圖的鄰接表等等。 無頭雙向鏈表:在Java的集合框架庫中LinkedList底層實(shí)現(xiàn)就是無頭雙向循環(huán)鏈表。 鏈表的實(shí)現(xiàn) 創(chuàng)建一個(gè)鏈表 遍歷單鏈表 、 得到

    2024年02月11日
    瀏覽(30)
  • 數(shù)據(jù)結(jié)構(gòu)(Java實(shí)現(xiàn))LinkedList與鏈表(下)

    數(shù)據(jù)結(jié)構(gòu)(Java實(shí)現(xiàn))LinkedList與鏈表(下)

    ** ** 結(jié)論 讓一個(gè)指針從鏈表起始位置開始遍歷鏈表,同時(shí)讓一個(gè)指針從判環(huán)時(shí)相遇點(diǎn)的位置開始繞環(huán)運(yùn)行,兩個(gè)指針都是每次均走一步,最終肯定會(huì)在入口點(diǎn)的位置相遇。 LinkedList的模擬實(shí)現(xiàn) 單個(gè)節(jié)點(diǎn)的實(shí)現(xiàn) 尾插 運(yùn)行結(jié)果如下: 也可以暴力使用 全部代碼 MyLinkedList IndexOut

    2024年02月11日
    瀏覽(22)
  • 數(shù)據(jù)結(jié)構(gòu):詳解【鏈表】的實(shí)現(xiàn)(單向鏈表+雙向鏈表)

    數(shù)據(jù)結(jié)構(gòu):詳解【鏈表】的實(shí)現(xiàn)(單向鏈表+雙向鏈表)

    1.順序表的問題和思考 問題: 中間/頭部的插入刪除,時(shí)間復(fù)雜度為O(N)。 增容需要申請新空間,拷貝數(shù)據(jù),釋放舊空間,會(huì)有不小的消耗。 增容一般是呈2倍的增長,勢必會(huì)有一定的空間浪費(fèi)。例如當(dāng)前容量為100,滿了以后增容到200,我們再繼續(xù)插入了5個(gè)數(shù)據(jù),后面沒有數(shù)據(jù)

    2024年03月26日
    瀏覽(35)
  • 【數(shù)據(jù)結(jié)構(gòu)】_4.List接口實(shí)現(xiàn)類LinkedList與鏈表

    【數(shù)據(jù)結(jié)構(gòu)】_4.List接口實(shí)現(xiàn)類LinkedList與鏈表

    目錄 1.鏈表的結(jié)構(gòu)與特點(diǎn) 1.1 鏈表的結(jié)構(gòu): 1.2 鏈表的特點(diǎn): 2. 不帶頭單鏈表的模擬實(shí)現(xiàn) 3. 單鏈表OJ 3.1 題目1:移除鏈表元素:? 3.2 題目2:反轉(zhuǎn)一個(gè)單鏈表 3.3 題目3:返回鏈表的中間結(jié)點(diǎn) 3.4 題目4:鏈表的倒數(shù)第k個(gè)結(jié)點(diǎn) 3.5 題目5:合并兩個(gè)有序鏈表 3.6 題目6:鏈表的回文結(jié)構(gòu)

    2024年02月15日
    瀏覽(18)
  • 數(shù)據(jù)結(jié)構(gòu)單向循環(huán)鏈表,創(chuàng)建以及增刪改查的實(shí)現(xiàn)

    數(shù)據(jù)結(jié)構(gòu)單向循環(huán)鏈表,創(chuàng)建以及增刪改查的實(shí)現(xiàn)

    循環(huán)鏈表: 是另一種形式的鏈?zhǔn)酱鎯Y(jié)構(gòu)。其特點(diǎn)是表中最后一個(gè)結(jié)點(diǎn)的指針域指向頭節(jié)點(diǎn),整個(gè)鏈表形成一個(gè)環(huán)。 單向循環(huán)鏈表的操作和單鏈表操作基本一致,差別在于:當(dāng)鏈表遍歷時(shí),判別當(dāng)前指針p是否指向表尾結(jié)點(diǎn)的終止條件不同。在單鏈表中,判別條件一般為p!=

    2024年02月16日
    瀏覽(23)
  • 數(shù)據(jù)結(jié)構(gòu)三:線性表之單鏈表(帶頭結(jié)點(diǎn)單向)的設(shè)計(jì)與實(shí)現(xiàn)

    數(shù)據(jù)結(jié)構(gòu)三:線性表之單鏈表(帶頭結(jié)點(diǎn)單向)的設(shè)計(jì)與實(shí)現(xiàn)

    ? ? ? ? 線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)正是所謂的單鏈表,何謂單鏈表?通過地址將每一個(gè)數(shù)據(jù)元素串起來,進(jìn)行使用,這可以彌補(bǔ)順序表在進(jìn)行任意位置的插入和刪除需要進(jìn)行大量的數(shù)據(jù)元素移動(dòng)的缺點(diǎn),只需要修改指針的指向即可;單鏈表的種類又可劃分為很多種,本篇博客詳

    2024年02月19日
    瀏覽(107)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包