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

數(shù)據(jù)結(jié)構(gòu)——雙向鏈表(C語(yǔ)言版)

這篇具有很好參考價(jià)值的文章主要介紹了數(shù)據(jù)結(jié)構(gòu)——雙向鏈表(C語(yǔ)言版)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

上一章:數(shù)據(jù)結(jié)構(gòu)——單向鏈表(C語(yǔ)言版)-CSDN博客

目錄

什么是雙向鏈表?

雙向鏈表的節(jié)點(diǎn)結(jié)構(gòu)

雙向鏈表的基本操作

完整的雙向鏈表示例

總結(jié)


什么是雙向鏈表?

雙向鏈表是一種常見(jiàn)的數(shù)據(jù)結(jié)構(gòu),它由一系列節(jié)點(diǎn)組成,每個(gè)節(jié)點(diǎn)包含兩個(gè)指針:一個(gè)指向前一個(gè)節(jié)點(diǎn),一個(gè)指向后一個(gè)節(jié)點(diǎn)。雙向鏈表可以在任意位置高效地插入和刪除節(jié)點(diǎn),相比單向鏈表,雙向鏈表可以雙向遍歷,但相應(yīng)地需要更多的內(nèi)存空間存儲(chǔ)額外的指針。

雙向鏈表的節(jié)點(diǎn)結(jié)構(gòu)
typedef struct Node {
    int data;
    struct Node* prev;
    struct Node* next;
} Node;
雙向鏈表的基本操作
  1. 初始化雙向鏈表

    Node* initLinkedList() {
     Node* head = (Node*)malloc(sizeof(Node));
     head->prev = NULL;
     head->next = NULL;
     return head;
    }
  2. 插入節(jié)點(diǎn)?

    void insertNode(Node* prevNode, int data) 
    { Node* newNode = (Node*)malloc(sizeof(Node)); 
    newNode->data = data;
    
    newNode->prev = prevNode;
     newNode->next = prevNode->next;
    
    prevNode->next->prev = newNode;
     prevNode->next = newNode;}

? ? 3.刪除節(jié)點(diǎn)

void deleteNode(Node* delNode) {
    delNode->prev->next = delNode->next;
    delNode->next->prev = delNode->prev;
    free(delNode);
}
  1. 遍歷雙向鏈表
    void printLinkedList(Node* head) {
     Node* current = head->next;
     while (current != NULL) {
         printf("%d ", current->data);
         current = current->next;
     }
     printf("\\n");
    }
完整的雙向鏈表示例
#include <stdio.h>
#include <stdlib.h>

typedef struct Node {
    int data;
    struct Node* prev;
    struct Node* next;
} Node;

Node* initLinkedList() {
    Node* head = (Node*)malloc(sizeof(Node));
    head->prev = NULL;
    head->next = NULL;
    return head;
}

void insertNode(Node* prevNode, int data) {
    Node* newNode = (Node*)malloc(sizeof(Node));
    newNode->data = data;
    
    newNode->prev = prevNode;
    newNode->next = prevNode->next;
    
    prevNode->next->prev = newNode;
    prevNode->next = newNode;
}

void deleteNode(Node* delNode) {
    delNode->prev->next = delNode->next;
    delNode->next->prev = delNode->prev;
    free(delNode);
}

void printLinkedList(Node* head) {
    Node* current = head->next;
    while (current != NULL) {
        printf("%d ", current->data);
        current = current->next;
    }
    printf("\\n");
}

int main() {
    Node* head = initLinkedList();
    
    insertNode(head, 1);
    insertNode(head->next, 2);
    insertNode(head->next->next, 3);
    
    printLinkedList(head);
    
    deleteNode(head->next);
    
    printLinkedList(head);
    
    return 0;
}
總結(jié)

通過(guò)上述代碼示例,我們實(shí)現(xiàn)了雙向鏈表的基本操作,包括初始化、插入和刪除節(jié)點(diǎn),以及遍歷鏈表。雙向鏈表是一種靈活且高效的數(shù)據(jù)結(jié)構(gòu),適用于需要頻繁插入和刪除操作的場(chǎng)景。通過(guò)深入理解雙向鏈表的實(shí)現(xiàn)原理,我們可以更好地應(yīng)用它解決實(shí)際問(wèn)題。

由以上內(nèi)容我們其實(shí)就可以看到在應(yīng)用與理解層面,雙向鏈表相較于單向鏈表有很大的優(yōu)勢(shì),但在具體應(yīng)用中還需要我們實(shí)際情況實(shí)際判斷。

感謝觀看,還請(qǐng)各位大佬點(diǎn)贊支持以下!??!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-843522.html

到了這里,關(guān)于數(shù)據(jù)結(jié)構(gòu)——雙向鏈表(C語(yǔ)言版)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【數(shù)據(jù)結(jié)構(gòu)】—C語(yǔ)言實(shí)現(xiàn)雙向鏈表(超詳細(xì)!)

    【數(shù)據(jù)結(jié)構(gòu)】—C語(yǔ)言實(shí)現(xiàn)雙向鏈表(超詳細(xì)!)

    ??????????????????????????????? ??? ? 食用指南:本文在有C基礎(chǔ)的情況下食用更佳 ? ????????????????????????????? ??? ? ?? 這就不得不推薦此專(zhuān)欄了:C語(yǔ)言 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 雙向鏈表 前 置知識(shí) :?jiǎn)捂湵?? ? ?

    2024年02月13日
    瀏覽(23)
  • 【數(shù)據(jù)結(jié)構(gòu)】C語(yǔ)言實(shí)現(xiàn)雙向鏈表(帶頭結(jié)點(diǎn)、循環(huán))

    【數(shù)據(jù)結(jié)構(gòu)】C語(yǔ)言實(shí)現(xiàn)雙向鏈表(帶頭結(jié)點(diǎn)、循環(huán))

    結(jié)點(diǎn)定義: 接口定義: 我們將申請(qǐng)結(jié)點(diǎn)的代碼封裝成函數(shù),方便后續(xù)使用 由于是帶頭結(jié)點(diǎn)的雙向鏈表,因此在使用鏈表前,我們需要對(duì)鏈表進(jìn)行初始化。 遍歷鏈表,值得說(shuō)的是,帶頭結(jié)點(diǎn)的雙向鏈表的循環(huán)結(jié)束條件是 cur != phead 尾插時(shí),需要先找到尾結(jié)點(diǎn),然后將新結(jié)點(diǎn)插

    2024年02月03日
    瀏覽(96)
  • 【數(shù)據(jù)結(jié)構(gòu)初階】四、線性表里的鏈表(帶頭+雙向+循環(huán) 鏈表 -- C語(yǔ)言實(shí)現(xiàn))

    【數(shù)據(jù)結(jié)構(gòu)初階】四、線性表里的鏈表(帶頭+雙向+循環(huán) 鏈表 -- C語(yǔ)言實(shí)現(xiàn))

    ========================================================================= 相關(guān)代碼gitee自取 : C語(yǔ)言學(xué)習(xí)日記: 加油努力 (gitee.com) ?========================================================================= 接上期 : 【數(shù)據(jù)結(jié)構(gòu)初階】三、 線性表里的鏈表(無(wú)頭+單向+非循環(huán)鏈表 -- C語(yǔ)言實(shí)現(xiàn))-CSDN博客 ?====

    2024年02月08日
    瀏覽(30)
  • 『初階數(shù)據(jù)結(jié)構(gòu) ? C語(yǔ)言』⑨ - 基于結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)——鏈表(單鏈表&&雙向循環(huán)鏈表)附完整源碼

    『初階數(shù)據(jù)結(jié)構(gòu) ? C語(yǔ)言』⑨ - 基于結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)——鏈表(單鏈表&&雙向循環(huán)鏈表)附完整源碼

    ? 本章內(nèi)容 1.什么是鏈表 2.鏈表常見(jiàn)幾種形式 3.無(wú)頭單向非循環(huán)鏈表的實(shí)現(xiàn) 3.1結(jié)點(diǎn)結(jié)構(gòu)的定義 3.2函數(shù)接口的實(shí)現(xiàn) 3.2.1尾插 3.2.2尾刪 4. 帶頭雙向循環(huán)鏈表的實(shí)現(xiàn) 4.1結(jié)點(diǎn)結(jié)構(gòu)的定義 4.2函數(shù)接口的實(shí)現(xiàn) 5.兩種鏈表的差異 ①尾插與尾刪的時(shí)間復(fù)雜度 ②頭插與頭刪的時(shí)間復(fù)雜度 ③

    2024年02月16日
    瀏覽(95)
  • 鏈接未來(lái):深入理解鏈表數(shù)據(jù)結(jié)構(gòu)(二.c語(yǔ)言實(shí)現(xiàn)帶頭雙向循環(huán)鏈表)

    鏈接未來(lái):深入理解鏈表數(shù)據(jù)結(jié)構(gòu)(二.c語(yǔ)言實(shí)現(xiàn)帶頭雙向循環(huán)鏈表)

    上篇文章簡(jiǎn)述講解了鏈表的基本概念并且實(shí)現(xiàn)了無(wú)頭單向不循環(huán)鏈表:鏈接未來(lái):深入理解鏈表數(shù)據(jù)結(jié)構(gòu)(一.c語(yǔ)言實(shí)現(xiàn)無(wú)頭單向非循環(huán)鏈表)-CSDN博客 那今天接著給大家?guī)?lái)帶頭雙向循環(huán)鏈表的實(shí)現(xiàn) : 頭文件DoubleList.h:用來(lái)基礎(chǔ)準(zhǔn)備(常量定義,typedef),鏈表表的基本框架

    2024年01月16日
    瀏覽(58)
  • 數(shù)據(jù)結(jié)構(gòu)_鏈表_雙向循環(huán)鏈表的初始化、插入、刪除、修改、查詢(xún)打?。ɑ贑語(yǔ)言實(shí)現(xiàn))

    數(shù)據(jù)結(jié)構(gòu)_鏈表_雙向循環(huán)鏈表的初始化、插入、刪除、修改、查詢(xún)打?。ɑ贑語(yǔ)言實(shí)現(xiàn))

    版本: 2024年4月26日 V1.0 發(fā)布于博客園 目錄 目錄 雙向循環(huán)鏈表公式 初始化雙向循環(huán)鏈表 構(gòu)建雙向循環(huán)鏈表結(jié)點(diǎn) 創(chuàng)建一個(gè)空鏈表(僅頭結(jié)點(diǎn)) 創(chuàng)建一個(gè)新結(jié)點(diǎn) 插入數(shù)據(jù) 頭插 中插 尾插 刪除數(shù)據(jù) 頭刪 中刪 尾刪 查詢(xún)打印數(shù)據(jù) 遍歷打印 測(cè)試 測(cè)試結(jié)果: 完整代碼 DoubleCirLList.h

    2024年04月27日
    瀏覽(36)
  • 數(shù)據(jù)結(jié)構(gòu)-鏈表結(jié)構(gòu)-雙向鏈表

    數(shù)據(jù)結(jié)構(gòu)-鏈表結(jié)構(gòu)-雙向鏈表

    雙向鏈表也叫雙鏈表,與單向鏈表不同的是,每一個(gè)節(jié)點(diǎn)有三個(gè)區(qū)域組成:兩個(gè)指針域,一個(gè)數(shù)據(jù)域 前一個(gè)指針域:存儲(chǔ)前驅(qū)節(jié)點(diǎn)的內(nèi)存地址 后一個(gè)指針域:存儲(chǔ)后繼節(jié)點(diǎn)的內(nèi)存地址 數(shù)據(jù)域:存儲(chǔ)節(jié)點(diǎn)數(shù)據(jù) 以下就是雙向鏈表的最基本單位 節(jié)點(diǎn)的前指針域指向前驅(qū),后指針

    2024年02月04日
    瀏覽(31)
  • 【數(shù)據(jù)結(jié)構(gòu)】雙向奔赴的愛(ài)戀 --- 雙向鏈表

    【數(shù)據(jù)結(jié)構(gòu)】雙向奔赴的愛(ài)戀 --- 雙向鏈表

    關(guān)注小莊 頓頓解饞????? 引言:上回我們講解了單鏈表(單向不循環(huán)不帶頭鏈表),我們可以發(fā)現(xiàn)他是存在一定缺陷的,比如尾刪的時(shí)候需要遍歷一遍鏈表,這會(huì)大大降低我們的性能,再比如對(duì)于鏈表中的一個(gè)結(jié)點(diǎn)我們是無(wú)法直接訪問(wèn)它的上一個(gè)結(jié)點(diǎn),那有什么解決方法呢

    2024年04月08日
    瀏覽(27)
  • 數(shù)據(jù)結(jié)構(gòu)—雙向鏈表

    數(shù)據(jù)結(jié)構(gòu)—雙向鏈表

    目錄 1.? 鏈表的種類(lèi) 2.? 最實(shí)用的兩種鏈表類(lèi)型 3.? 實(shí)現(xiàn)雙向帶頭循環(huán)鏈表 ? ? ? ? ? ? ? ? ? 3.1 創(chuàng)建頭節(jié)點(diǎn) ????????3.2 實(shí)現(xiàn)雙向循環(huán)功能—返回頭指針 ????????3.3? 尾插?? ????????3.4 頭插 ????????3.5 尾刪 ????????3.6 頭刪 4.? 實(shí)現(xiàn)兩個(gè)重要接口函數(shù) ?

    2023年04月23日
    瀏覽(28)
  • 數(shù)據(jù)結(jié)構(gòu) - 雙向鏈表

    數(shù)據(jù)結(jié)構(gòu) - 雙向鏈表

    文章目錄 目錄 文章目錄 前言 一、什么是雙向鏈表? 雙向鏈表有什么優(yōu)勢(shì)? 二、雙向鏈表的設(shè)計(jì)和實(shí)現(xiàn) 1.設(shè)計(jì)思想 尾增 : 在鏈表的末尾添加新的元素 ?頭插 : 在鏈表頭部插入節(jié)點(diǎn) ?刪除 : 根據(jù)val的值刪除節(jié)點(diǎn) ?查找 : 根據(jù)索引的值查找并返回節(jié)點(diǎn) 總結(jié) 大家好,今天給大家講解

    2024年02月09日
    瀏覽(27)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包