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

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

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

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

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

1.slist技術(shù)原理

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

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

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

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

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

2.1初始化賦值和遍歷

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

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

遍歷slist和list一樣,只能使用迭代器進(jìn)行遍歷,而不能使用數(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();
}

運(yùn)行結(jié)果:

2.2元素的插入

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

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

總結(jié)

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

相關(guān)文章

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

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

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

    C++ Easylogging++日志庫配置使用超詳細(xì)講解

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

    c++實(shí)現(xiàn)簡(jiǎn)單隨機(jī)數(shù)的代碼

    在本篇文章里小編給大家整理的是一篇關(guān)于c++實(shí)現(xiàn)簡(jiǎn)單隨機(jī)數(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++紅黑樹的底層實(shí)現(xiàn)機(jī)制詳解

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

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論

尼木县| 清镇市| 建宁县| 锦屏县| 台南县| 车致| 班玛县| 丹东市| 海南省| 酒泉市| 若尔盖县| 红安县| 林芝县| 延川县| 宣威市| 红河县| 昭苏县| 汕尾市| 金华市| 宁国市| 小金县| 南雄市| 鹤山市| 西林县| 灌阳县| 通城县| 张家港市| 高州市| 乌鲁木齐县| 汉中市| 凌云县| 绥芬河市| 安顺市| 丰镇市| 南江县| 鄄城县| 蒙阴县| 澄城县| 怀集县| 阜新| 华容县|