亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

c++雙向鏈表操作示例(創建雙向鏈、雙向鏈表中查找數據、插入數據等)

2020-01-26 15:30:55
字體:
來源:轉載
供稿:網友

雙向鏈表也叫雙鏈表,是鏈表的一種,它的每個數據結點中都有兩個指針,分別指向直接后繼和直接前驅。所以,從雙向鏈表中的任意一個結點開始,都可以很方便地訪問它的前驅結點和后繼結點。一般我們都構造雙向循環鏈表。

(1)定義雙向鏈表的基本結構

復制代碼 代碼如下:

typedef struct _DOUBLE_LINK_NODE 

    int data; 
    struct _DOUBLE_LINK_NODE* prev; 
    struct _DOUBLE_LINK_NODE* next; 
}DOUBLE_LINK_NODE; 

(2)創建雙向鏈表節點

復制代碼 代碼如下:

DOUBLE_LINK_NODE* create_double_link_node(int value) 

    DOUBLE_LINK_NODE* pDLinkNode = NULL; 
    pDLinkNode = (DOUBLE_LINK_NODE*)malloc(sizeof(DOUBLE_LINK_NODE)); 
    assert(NULL != pDLinkNode); 

    memset(pDLinkNode, 0, sizeof(DOUBLE_LINK_NODE)); 
    pDLinkNode->data = value; 
    return pDLinkNode; 

(3)刪除雙向鏈表

復制代碼 代碼如下:

void delete_all_double_link_node(DOUBLE_LINK_NODE** pDLinkNode) 

    DOUBLE_LINK_NODE* pNode; 
    if(NULL == *pDLinkNode) 
        return ; 

    pNode = *pDLinkNode; 
    *pDLinkNode = pNode->next; 
    free(pNode); 
    delete_all_double_link_node(pDLinkNode); 
}

(4)在雙向鏈表中查找數據

復制代碼 代碼如下:

DOUBLE_LINK_NODE* find_data_in_double_link(const DOUBLE_LINK_NODE* pDLinkNode, int data) 

    DOUBLE_LINK_NODE* pNode = NULL; 
    if(NULL == pDLinkNode) 
        return NULL; 

    pNode = (DOUBLE_LINK_NODE*)pDLinkNode; 
    while(NULL != pNode){ 
        if(data == pNode->data) 
            return pNode; 
        pNode = pNode ->next; 
    } 

    return NULL; 

(5)雙向鏈表中插入數據

復制代碼 代碼如下:

STATUS insert_data_into_double_link(DOUBLE_LINK_NODE** ppDLinkNode, int data) 

    DOUBLE_LINK_NODE* pNode; 
    DOUBLE_LINK_NODE* pIndex; 

    if(NULL == ppDLinkNode) 
        return FALSE; 

    if(NULL == *ppDLinkNode){ 
        pNode = create_double_link_node(data); 
        assert(NULL != pNode); 
        *ppDLinkNode = pNode; 
        (*ppDLinkNode)->prev = (*ppDLinkNode)->next = NULL; 
        return TRUE; 
    } 

    if(NULL != find_data_in_double_link(*ppDLinkNode, data)) 
        return FALSE; 

    pNode = create_double_link_node(data); 
    assert(NULL != pNode); 

    pIndex = *ppDLinkNode; 
    while(NULL != pIndex->next) 
        pIndex = pIndex->next; 

    pNode->prev = pIndex; 
    pNode->next = pIndex->next; 
    pIndex->next = pNode; 
    return TRUE; 

(6)雙向鏈表中刪除數據

復制代碼 代碼如下:

STATUS delete_data_from_double_link(DOUBLE_LINK_NODE** ppDLinkNode, int data) 

    DOUBLE_LINK_NODE* pNode; 
    if(NULL == ppDLinkNode || NULL == *ppDLinkNode) 
        return FALSE; 

    pNode = find_data_in_double_link(*ppDLinkNode, data); 
    if(NULL == pNode) 
        return FALSE; 

    if(pNode == *ppDLinkNode){ 
        if(NULL == (*ppDLinkNode)->next){ 
            *ppDLinkNode = NULL; 
        }else{ 
            *ppDLinkNode = pNode->next; 
            (*ppDLinkNode)->prev = NULL; 
        } 

    }else{ 
        if(pNode->next) 
            pNode->next->prev = pNode->prev; 
        pNode->prev->next = pNode->next; 
    } 

    free(pNode); 
    return TRUE; 

(7)統計雙向鏈表中數據的個數

復制代碼 代碼如下:

int count_number_in_double_link(const DOUBLE_LINK_NODE* pDLinkNode) 

    int count = 0; 
    DOUBLE_LINK_NODE* pNode = (DOUBLE_LINK_NODE*)pDLinkNode; 

    while(NULL != pNode){ 
        count ++; 
        pNode = pNode->next; 
    } 
    return count; 

(8)打印雙向鏈表中數據

復制代碼 代碼如下:

void print_double_link_node(const DOUBLE_LINK_NODE* pDLinkNode) 

    DOUBLE_LINK_NODE* pNode = (DOUBLE_LINK_NODE*)pDLinkNode; 

    while(NULL != pNode){ 
        printf("%d/n", pNode->data); 
        pNode = pNode ->next; 
    } 

今天我們討論的雙向鏈表是非循環的,大家可以考慮一下如果改成循環雙向鏈表,應該怎么寫?如果是有序的循環雙向鏈表,又該怎么寫?

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
懂色av影视一区二区三区| 欧美精品18videos性欧| 欧美性猛交xxxx免费看久久久| 欧美午夜宅男影院在线观看| 欧美韩日一区二区| 日韩精品中文字幕在线| 岛国视频午夜一区免费在线观看| 亚洲人成在线观| 久久综合免费视频| 国产精品视频一| 色悠悠国产精品| 国产欧美精品在线播放| 色视频www在线播放国产成人| 国产精品色悠悠| 国产三级精品网站| 4438全国成人免费| 欧美亚洲国产精品| 亚洲美女av在线播放| 欧美日本亚洲视频| 欧美午夜无遮挡| 奇米四色中文综合久久| 精品中文字幕乱| 日韩久久精品成人| 国产精品视频内| 日韩精品视频在线观看免费| 国外日韩电影在线观看| 欧美中文字幕第一页| 欧美国产日产韩国视频| 亚洲人午夜精品免费| 97色伦亚洲国产| 亚洲欧美激情另类校园| 成人激情视频小说免费下载| 国产精品女人久久久久久| 中文字幕不卡在线视频极品| 国内免费久久久久久久久久久| 最新91在线视频| 国产精品久久久亚洲| 国产在线精品一区免费香蕉| 国产午夜精品视频免费不卡69堂| 美女久久久久久久久久久| 欧美野外猛男的大粗鳮| 欧美黄色www| 亚洲国产另类久久精品| 欧美中文字幕第一页| 精品久久久久久久久久ntr影视| 精品国产91乱高清在线观看| 97免费在线视频| 色青青草原桃花久久综合| 国产69精品久久久| 亚洲色图第一页| 久久福利网址导航| 伊人久久综合97精品| 视频在线一区二区| 91夜夜未满十八勿入爽爽影院| 91精品国产乱码久久久久久蜜臀| 国产欧洲精品视频| 日韩色av导航| 黑人极品videos精品欧美裸| 欧美成人免费小视频| 国产精品亚洲美女av网站| 欧美日韩激情美女| 欧美性猛交xxxx久久久| 久久国产精品免费视频| 国产一区二区在线免费视频| 国产精品免费久久久| 国产99久久精品一区二区永久免费| 国产日韩欧美日韩| 国产精品∨欧美精品v日韩精品| 成人免费视频a| 日韩在线观看免费全| 中文字幕亚洲欧美在线| 91精品久久久久| 91在线免费网站| 青草热久免费精品视频| 欧美成人亚洲成人日韩成人| 国产午夜精品视频免费不卡69堂| 色婷婷av一区二区三区久久| 国产亚洲精品久久久| 国产精品久久中文| 国产精品偷伦免费视频观看的| 亚洲无亚洲人成网站77777| 日韩电影中文 亚洲精品乱码| 国内精品久久久| 91色琪琪电影亚洲精品久久| 91在线无精精品一区二区| 91亚洲精品一区二区| 亚洲精品小视频在线观看| 91日本视频在线| 欧美性xxxxx极品娇小| 日韩在线小视频| 精品视频在线播放色网色视频| 午夜精品一区二区三区在线视频| 1769国产精品| 国内精品视频久久| 日韩人在线观看| 色婷婷综合成人av| 亚洲欧美中文日韩在线v日本| 韩国精品久久久999| 欧美日韩国产在线| 久久这里只有精品99| 91在线视频一区| 中文字幕亚洲欧美日韩高清| 亚洲激情成人网| 国产在线精品播放| 国产精品电影久久久久电影网| 久久97精品久久久久久久不卡| 91精品国产电影| 久久久亚洲成人| 亚洲男人的天堂在线| 国产精品视频中文字幕91| 久久福利视频网| 日韩视频在线一区| 成人免费网站在线观看| 欧美激情国产日韩精品一区18| 日韩av在线最新| 一区二区三区天堂av| 国产日韩欧美成人| 亚洲国产精品va在线看黑人| 日韩最新中文字幕电影免费看| 日韩精品在线私人| 日韩中文字幕网站| 亚洲精品久久久久久久久久久| 国产精品香蕉av| 精品网站999www| 亚洲欧美精品一区二区| 亚洲欧美国产精品久久久久久久| 日韩在线不卡视频| 中文字幕综合在线| 欧美老少做受xxxx高潮| 欧美激情女人20p| 国产一区二区日韩精品欧美精品| 97视频在线观看免费高清完整版在线观看| 国产综合在线视频| 亚洲一区二区久久久| 午夜精品福利电影| 色综合久久天天综线观看| 亚洲高清色综合| 国产精品小说在线| 韩曰欧美视频免费观看| 欧美中文字幕在线| 国产精品极品美女在线观看免费| 国产精品啪视频| 狠狠躁夜夜躁久久躁别揉| 欧美一级在线亚洲天堂| 欧美在线观看网站| 啊v视频在线一区二区三区| 77777少妇光屁股久久一区| 国产色婷婷国产综合在线理论片a| 5252色成人免费视频| 国产精品美女免费| 日本一区二区三区在线播放| 日韩免费精品视频| 国产区精品视频| 色爱av美腿丝袜综合粉嫩av| 不卡av在线播放| 亚洲一区精品电影| 精品在线欧美视频| 日韩av中文在线| 久久99久久99精品免观看粉嫩| 欧美精品一区三区| 欧美性猛交xxxx乱大交| 欧美日韩亚洲一区二| 欧美极品xxxx| 91亚洲精品久久久|