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

C++ STL之slist單向鏈表容器使用方式

 更新時間:2024年04月23日 10:15:59   作者:csdn_HZW  
這篇文章主要介紹了C++ STL之slist單向鏈表容器使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

slist為單向鏈表的泛化容器,與list雙向鏈表容器一樣,實現(xiàn)了線性表數(shù)據(jù)的鏈表存儲,數(shù)據(jù)元素不必在物理內(nèi)存中連續(xù)分布。

slist鏈表的節(jié)點,只有后繼的指針,不含前驅(qū)的指針。因此,在節(jié)省前驅(qū)指針的存儲空間的同時,也就不再支持迭代器的反向移動。

1.slist技術(shù)原理

slist內(nèi)部的鏈表由頭指針、頭節(jié)點和元素節(jié)點組成,每個節(jié)點含有指向后繼節(jié)點的指針,最后一個節(jié)點的指針為null,可見slist沒有形成一個環(huán)形回路。

單向鏈表結(jié)構(gòu)

頭節(jié)點一般不存儲數(shù)據(jù),為了使各個元素節(jié)點都有前驅(qū)節(jié)點的指針指向它以便能夠不加區(qū)別的對第一個元素節(jié)點和其他元素節(jié)點進行統(tǒng)一處理,所以構(gòu)造頭節(jié)點。

2.slist應(yīng)用基礎(chǔ)

list對象的創(chuàng)建和vector一樣,不多解釋。元素的刪除、歸并、排序與list相同。

2.1初始化賦值和遍歷

通常使用push_front函數(shù)進行初始化,由于slist的頭節(jié)點僅有一個指針域保存首元素地址,而沒有存放最后一個元素的地址,因此slist沒有提供類似的push_back函數(shù)能夠在容器尾部添加元素。

push_front函數(shù)在鏈表首元素前面,插入一個新元素,使之成為首元素。

遍歷slist和list一樣,只能使用迭代器進行遍歷,而不能使用數(shù)組下標(biāo)的形式。

#include <QList>                 //在qt中QList就是單向鏈表,用法和slist相同
#include <QCoreApplication>
#include<QString>
using namespace std;
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QList<int> s;
    s.push_front(11);           //在首元素插入11
    s.push_front(23);           //在11前面插入23,即現(xiàn)在23為首元素
    s.push_front(39);          // 在首元素23之前插入39,即39,23,11
    QList<int>::iterator i,iend;
    iend=s.end();
    for(i=s.begin();i!=iend;i++)
    {
        cout << *i << " ";
    }
    cout << endl;
    return a.exec();
}

運行結(jié)果:

2.2元素的插入

對于任意位置上的slist鏈表元素的插入,可使用insert_after和insert函數(shù),insert_after函數(shù)直接在指定的pos位置后插入新元素。

insert則從單向鏈表的頭節(jié)點開始,找到pos的前驅(qū)位置,然后調(diào)用insert_after函數(shù)進行插入,因此執(zhí)行效率比較低。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 一些C語言中字符串的算法問題解決實例小結(jié)

    一些C語言中字符串的算法問題解決實例小結(jié)

    這篇文章主要介紹了一些C語言中字符串的算法問題解決實例小結(jié),包括將字符串轉(zhuǎn)化為int類型的數(shù)及旋轉(zhuǎn)字符串等操作,需要的朋友可以參考下
    2016-03-03
  • C++ Easylogging++日志庫配置使用超詳細講解

    C++ Easylogging++日志庫配置使用超詳細講解

    這篇文章主要介紹了C++ Easylogging++日志庫配置使用,Easylogging++是用于C++應(yīng)用程序的單頭高效日志庫。它非常強大,高度可擴展并且可以根據(jù)用戶的要求進行配置
    2022-11-11
  • c++實現(xiàn)簡單隨機數(shù)的代碼

    c++實現(xiàn)簡單隨機數(shù)的代碼

    在本篇文章里小編給大家整理的是一篇關(guān)于c++實現(xiàn)簡單隨機數(shù)的代碼內(nèi)容,有需要的朋友們可以跟著學(xué)習(xí)下。
    2021-05-05
  • c語言讀取obj文件轉(zhuǎn)換數(shù)據(jù)的小例子

    c語言讀取obj文件轉(zhuǎn)換數(shù)據(jù)的小例子

    c語言讀取obj文件轉(zhuǎn)換數(shù)據(jù)的小例子,需要的朋友可以參考一下
    2013-03-03
  • C++紅黑樹的底層實現(xiàn)機制詳解

    C++紅黑樹的底層實現(xiàn)機制詳解

    紅黑樹與AVL樹一樣,也是一種自平衡的二叉搜索樹,它在每個結(jié)點上增加一個存儲位表示結(jié)點的顏色,可以是Red或Black,通過對任何一條從根到葉子的路徑上各個結(jié)點著色方式的限制,本文介紹了C++紅黑樹的底層實現(xiàn)機制,需要的朋友可以參考下
    2024-08-08
  • 詳解C++編程中的變量相關(guān)知識

    詳解C++編程中的變量相關(guān)知識

    這篇文章主要介紹了詳解C++編程中的變量相關(guān)知識,是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-09-09
  • C++中指針和引用的區(qū)別分析

    C++中指針和引用的區(qū)別分析

    這篇文章主要介紹了C++中指針和引用的區(qū)別,有需要的朋友可以參考一下
    2014-01-01
  • C語言鏈表實現(xiàn)通訊錄系統(tǒng)課程設(shè)計

    C語言鏈表實現(xiàn)通訊錄系統(tǒng)課程設(shè)計

    這篇文章主要為大家詳細介紹了C語言鏈表實現(xiàn)通訊錄系統(tǒng)課程設(shè)計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C語言中g(shù)etchar(?)?函數(shù)使用詳解

    C語言中g(shù)etchar(?)?函數(shù)使用詳解

    getchar()?字符輸入函數(shù),沒有參數(shù),從輸入緩沖區(qū)里面讀取一個字,需要注意一次只能讀取一個字符,這篇文章主要介紹了C語言中g(shù)etchar函數(shù)使用詳解,需要的朋友可以參考下
    2022-12-12
  • VSCode多根工作區(qū)功能實現(xiàn)

    VSCode多根工作區(qū)功能實現(xiàn)

    VSCode的多根工作區(qū)功能允許在一個窗口內(nèi)同時處理多個文件夾,適用于前后端分離項目、Monorepo項目管理、微服務(wù)架構(gòu)開發(fā)等場景,本文主要介紹了VSCode多根工作區(qū)功能實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2025-12-12

最新評論

东光县| 郁南县| 平远县| 尖扎县| 清新县| 阿拉善左旗| 定结县| 渭南市| 厦门市| 洱源县| 锡林浩特市| 广南县| 长岛县| 资阳市| 尼玛县| 英超| 永济市| 信阳市| 平顶山市| 湟中县| 康定县| 开平市| 宝应县| 威信县| 军事| 渝中区| 萨嘎县| 祁东县| 旺苍县| 利辛县| 交口县| 紫阳县| 广昌县| 景东| 浠水县| 明星| 大埔县| 申扎县| 石台县| 靖西县| 家居|