最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2022年05月26日 16:36:48   作者:W...Z  
這篇文章主要為大家詳細(xì)介紹了C++數(shù)據(jù)結(jié)構(gòu)之雙向鏈表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C++數(shù)據(jù)結(jié)構(gòu)之雙向鏈表的具體代碼,供大家參考,具體內(nèi)容如下

#include <iostream>
using std::cout;
using std::endl;
struct Node
{
?? ?int data;
?? ?struct Node * next;
?? ?struct Node * pre;
};

一、創(chuàng)建雙向鏈表

Node * createList()
{
?? ?Node * head = new Node;
?? ?if (NULL == head)
?? ??? ?exit(-1);
?? ?head->next = head;
?? ?head->pre = head;
?? ?return head;
}

二、插入元素(頭插法)

讓新來的節(jié)點(diǎn)先有所指

void insertList(Node * head,int n)
{
?? ?Node * cur = new Node;
?? ?if (NULL == cur)
?? ??? ?exit(-1);
?? ?cur->next = head->next;
?? ?cur->pre = head;
?? ?head->next = cur;
?? ?cur->next->pre = cur;
?? ?
?? ?cur->data = n;
}

三、鏈表長度

int lenList(Node * head)
{
?? ?int i = 0;
?? ?Node * t = head->next;
?? ?while (t != head)
?? ?{
?? ??? ?i++;
?? ??? ?t = t->next;
?? ?}
?? ?return i;
}

四、查找遍歷

Node * findList(Node * head,int fn)
{
?? ?Node * forward = head->next;
?? ?Node * back = head->pre;
?? ?while (forward != back->next)
?? ?{
?? ??? ?if (forward->data == fn)
?? ??? ??? ?return forward;
?? ??? ?if (back->data == fn)
?? ??? ??? ?return back;
?? ??? ?if (forward == back)
?? ??? ??? ?break;
?? ??? ?forward = forward->next;
?? ??? ?back = back->pre;
?? ?}
?? ?return NULL;
}

五、刪除其中元素

void deleteList(Node * pFind)
{
?? ?pFind->pre->next = pFind->next;
?? ?pFind->next->pre = pFind->pre;
?? ?delete pFind;
}

六、排序

(類似于先刪除 再插入)

void sortDlist(Node * head)
{
?? ?int len = lenList(head);
?? ?Node *prep = NULL;
?? ?Node *p = NULL;
?? ?Node *q = NULL;
?? ?Node *t = NULL;
?? ?for (int i = 0;i < len - 1;i++)
?? ?{
?? ??? ?p = head->next;
?? ??? ?q = p->next;
?? ??? ?for (int j = 0;j < len - 1 - i;j++)
?? ??? ?{
?? ??? ??? ?if ((p->data)<(q->data))
?? ??? ??? ?{
?? ??? ??? ??? ?p->pre->next = q;
?? ??? ??? ??? ?q->pre = p->pre;

?? ??? ??? ??? ?p->next = q->next;
?? ??? ??? ??? ?p->pre = q;

?? ??? ??? ??? ?q->next = p;
?? ??? ??? ??? ?p->next->pre = p;

?? ??? ??? ??? ?t = p;
?? ??? ??? ??? ?p = q;
?? ??? ??? ??? ?q = t;
?? ??? ??? ?}
?? ??? ??? ?p = p->next;
?? ??? ??? ?q = q->next;
?? ??? ?}
?? ?}
}

七、銷毀鏈表

void desList(Node * head)
{
?? ?head->pre->next = NULL;
?? ?Node *t = NULL;
?? ?while (head != NULL)
?? ?{
?? ??? ?t = head;
?? ??? ?head = head->next;
?? ??? ?delete t;
?? ?}
}

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++深入探究不同的繼承體系

    C++深入探究不同的繼承體系

    繼承是C++面向?qū)ο缶幊讨械囊婚T。繼承是子類繼承父類的特征和行為,或者是繼承父類得方法,使的子類具有父類得的特性和行為。重寫是子類對(duì)父類的允許訪問的方法實(shí)行的過程進(jìn)行重新編寫,返回值和形參都不能改變。就是對(duì)原本的父類進(jìn)行重新編寫,但是外部接口不能被重寫
    2022-05-05
  • strtok函數(shù)的使用示例

    strtok函數(shù)的使用示例

    今天小編就為大家分享一篇關(guān)于strtok函數(shù)的使用示例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 簡單掌握桶排序算法及C++版的代碼實(shí)現(xiàn)

    簡單掌握桶排序算法及C++版的代碼實(shí)現(xiàn)

    桶排序是將要排序的算法按桶分組排序之后再遍歷匯總的一種線性排序算法,下面就讓我們來通過小例子簡單掌握桶排序算法及C++版的代碼實(shí)現(xiàn)^^
    2016-07-07
  • C++11非受限聯(lián)合體的使用

    C++11非受限聯(lián)合體的使用

    本文主要介紹了C++11非受限聯(lián)合體的使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C語言代碼實(shí)現(xiàn)簡單掃雷小游戲

    C語言代碼實(shí)現(xiàn)簡單掃雷小游戲

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • C/C++如何獲取當(dāng)前系統(tǒng)時(shí)間的實(shí)例詳解

    C/C++如何獲取當(dāng)前系統(tǒng)時(shí)間的實(shí)例詳解

    這篇文章主要介紹了 C/C++如何獲取當(dāng)前系統(tǒng)時(shí)間的實(shí)例詳解的相關(guān)資料,這里提供了幾種實(shí)現(xiàn)方法,幫助大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-08-08
  • 用C語言完整實(shí)現(xiàn)2048游戲

    用C語言完整實(shí)現(xiàn)2048游戲

    2048是一款數(shù)字益智游戲,初始數(shù)字則是由2+2組成的基數(shù)4。在操作方面的不同則表現(xiàn)為一步一格的移動(dòng),變成更為爽快的一次到底。相同數(shù)字的方?jīng)r在靠攏、相撞時(shí)會(huì)相加。系統(tǒng)給予的數(shù)字方塊不是2就是4,玩家要想辦法在這小小的16格范圍中湊出2048這個(gè)數(shù)字方塊
    2021-11-11
  • 詳解C語言之柔性數(shù)組

    詳解C語言之柔性數(shù)組

    這篇文章主要介紹了C語言柔性數(shù)組,通過實(shí)例分析了不完整類型、結(jié)構(gòu)體及柔性數(shù)組等概念,需要的朋友可以參考下
    2021-11-11
  • C語言靜態(tài)動(dòng)態(tài)兩版本通訊錄實(shí)戰(zhàn)源碼

    C語言靜態(tài)動(dòng)態(tài)兩版本通訊錄實(shí)戰(zhàn)源碼

    這篇文章主要為大家?guī)砹薈語言實(shí)現(xiàn)靜態(tài)動(dòng)態(tài)兩版本的通訊錄實(shí)戰(zhàn)源碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-02-02
  • C++深拷貝與淺拷貝的區(qū)別及應(yīng)用

    C++深拷貝與淺拷貝的區(qū)別及應(yīng)用

    這篇文章主要給大家介紹了關(guān)于C++深拷貝與淺拷貝區(qū)別及應(yīng)用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04

最新評(píng)論

宣化县| 家居| 东莞市| 达拉特旗| 沁阳市| 沂南县| 侯马市| 信阳市| 阜新市| 花垣县| 彰化市| 栾城县| 丹东市| 静乐县| 封开县| 柘城县| 双牌县| 仲巴县| 馆陶县| 武清区| 富民县| 柞水县| 凤冈县| 汝阳县| 镇赉县| 连平县| 久治县| 桃江县| 武夷山市| 嘉善县| 台湾省| 平遥县| 改则县| 南平市| 车致| 天等县| 房产| 白山市| 博爱县| 苍溪县| 临漳县|