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

C++超詳細分析單鏈表的實現(xiàn)與常見接口

 更新時間:2022年03月24日 10:28:58   作者:程序猿教你打籃球  
鏈表是一種物理存儲結構上非連續(xù)、非順序的存儲結構,數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針鏈接次序實現(xiàn)的,本章帶你分析單鏈表的實現(xiàn)與常見接口

相信如果看完了上期順序表的小伙伴應該發(fā)現(xiàn)了順序表的諸多缺點:

?? 中間/頭部的插入刪除,時間復雜度為O(N)!

?? 增容需要申請新的空間,拷貝數(shù)據(jù),釋放舊空間,會有不少的消耗。

?? 增容一般是呈倍增長,勢必會有一定的空間浪費。

鏈表的OJ題會單獨出一期的哦!

那么,如何解決以上的問題呢?

?? 那么什么是鏈表呢?—— 鏈表是一種物理存儲結構上非連續(xù)、非順序的存儲結構,數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針鏈接次序實現(xiàn)的 。

?實際中要實現(xiàn)的鏈表的結構非常多樣,以下情況組合起來就有8種鏈表結構:

1. 單向、雙向? ? ? ? ?2. 帶頭、不帶頭? ? ? ? ? ? 3. 循環(huán)、非循環(huán)

我們只講最簡單和最復雜的,畢竟一句老話,冬天到了春天還會遠嗎???

今天我們講無頭單向非循環(huán)鏈表,下期講帶頭雙向循環(huán)鏈表 !

好的,有了上面的認識正式進入我們本期的學習??。

無頭單向非循環(huán)鏈表:結構簡單,一般不會單獨用來存數(shù)據(jù)。實際中更多是作為其他數(shù)據(jù)結 構的子結構,如哈希桶、圖的鄰接表等等。另外這種結構在筆試面試中出現(xiàn)很多。

?我們來看到單鏈表的架構:

??? 單鏈表和順序表不一樣,我們是需要的時候動態(tài)申請一個節(jié)點空間就夠了!

SLTNode* BuySListNode(SLTDataType x)
{
	SLTNode* newnode = (SLTNode*)malloc(sizeof(SLTNode));
	if (newnode == NULL)
		return NULL;//做空指針判斷
	newnode->data = x;
	newnode->next = NULL;
 
	return newnode;
}

這里我們利用malloc函數(shù)開辟了一個SLTNode大小的空間(得用SLTNode* 來接收),malloc和realloc一樣如果開辟失敗會返回空指針,所以這我們需要先做判斷!不為空則把數(shù)據(jù)放入data,并且把指向下一個節(jié)點的 next 置空!并且返回新節(jié)點的地址!(這里如果不明白則需要補充結構體,指針,動態(tài)內存開辟的知識)

?? 首先我們還是來實現(xiàn)單鏈表的頭部插入數(shù)據(jù)!

這里我們可以看到,不帶哨兵位(帶頭鏈表)鏈表需要改變頭指針位置,下期我們學帶頭雙向循環(huán)鏈表就可以不用雙指針了!

?? 下面是我們的單鏈表尾部插入數(shù)據(jù)!

?? 接著來實現(xiàn)單鏈表頭部刪除數(shù)據(jù)!

??? 下面來到單鏈表的尾部刪除數(shù)據(jù)!

?? 在指定元素前插入節(jié)點!

?這個我們首先需要找到指定節(jié)點元素的地址!

?接下來就是實現(xiàn)我們的指定元素前插入節(jié)點的函數(shù)了!

同理我們接著來實現(xiàn)刪除指定元素的節(jié)點!

最后其實還有一個修改節(jié)點數(shù)據(jù),這個看了上期的順序表實現(xiàn)起來就很簡單,留給你們自己研究去啦!學好編程多想,多敲代碼準沒錯!?

????????那么以上這就是我們無頭單向非循環(huán)鏈表的常見接口了,如果你看完感覺比較吃力看不懂的話,建議多去回顧下c語言指針,結構體,動態(tài)內存這幾張的內容!當你能把這個單鏈表理解透徹了,下一期的帶頭雙向循環(huán)鏈表也很容易理解的,代碼實現(xiàn)起來更輕松,加油吧!

最后還是那句話??我們一起快樂編程不頭禿!

gitee(碼云):Mercury. (zzwlwp) - Gitee.com??

到此這篇關于C++超詳細分析單鏈表的實現(xiàn)與常見接口的文章就介紹到這了,更多相關C++ 單鏈表的實現(xiàn)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C++ list-map鏈表與映射表的簡單使用

    C++ list-map鏈表與映射表的簡單使用

    本文主要介紹了C++ list-map鏈表與映射表的簡單使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05
  • Qt中QStackedWidget控件的實現(xiàn)

    Qt中QStackedWidget控件的實現(xiàn)

    QStackedWidget是Qt框架中一個非常有用的控件,它允許你堆疊多個窗口部件,本文主要介紹了Qt中QStackedWidget控件的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2025-04-04
  • C++ vector容器縮小capacity問題

    C++ vector容器縮小capacity問題

    這篇文章主要介紹了C++ vector容器縮小capacity問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • C++ 解引用與函數(shù)基礎詳解之內存地址、調用方法及聲明

    C++ 解引用與函數(shù)基礎詳解之內存地址、調用方法及聲明

    函數(shù)是C++ 中重要的編程概念,它們可以提高代碼的可重用性、可讀性和可維護性,本文介紹C++ 解引用與函數(shù)基礎詳解之內存地址、調用方法及聲明,感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • C++類的自動轉換和強制類型轉換的實現(xiàn)示例

    C++類的自動轉換和強制類型轉換的實現(xiàn)示例

    類的自動轉換和強制類型轉換是面向對象編程中處理類型之間轉換的兩種重要機制,本文就來介紹一下這兩種方法的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-07-07
  • 詳解C++實現(xiàn)匈牙利算法

    詳解C++實現(xiàn)匈牙利算法

    匈牙利算法是一種在多項式時間內求解任務分配問題的組合優(yōu)化算法,并推動了后來的原始對偶方法。美國數(shù)學家哈羅德·庫恩于1955年提出該算法。此算法之所以被稱作匈牙利算法,是因為算法很大一部分是基于以前匈牙利數(shù)學家Dénes Kőnig和Jenő Egerváry的工作之上創(chuàng)建起來的
    2021-06-06
  • C++11右值引用和移動語義的實例解析

    C++11右值引用和移動語義的實例解析

    左值和右值都是針對表達式,左值是指表達式結束后依然存在的持久對象,右值是指表達式結束時就不再存在的臨時對象,下面這篇文章主要給大家介紹了關于C++11右值引用和移動語義的相關資料,需要的朋友可以參考下
    2022-09-09
  • C++ 排序插入排序實例詳解

    C++ 排序插入排序實例詳解

    這篇文章主要介紹了C++ 排序插入排序實例詳解的相關資料,需要的朋友可以參考下
    2017-06-06
  • c語言中getch,getche,getchar的區(qū)別

    c語言中getch,getche,getchar的區(qū)別

    getche() 和getch()很相似,它也需要引入頭文件conio.h,那它們之間的區(qū)別又在哪里呢?不同之處就在于getch()無返回顯示,getche()有返回顯示
    2013-09-09
  • C++的原生數(shù)組你了解多少

    C++的原生數(shù)組你了解多少

    這篇文章主要為大家詳細介紹了C++的原生數(shù)組,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02

最新評論

沙河市| 双辽市| 桦南县| 荆门市| 克什克腾旗| 蓬莱市| 航空| 岗巴县| 正宁县| 河源市| 阜城县| 康平县| 会理县| 临沂市| 浦北县| 霸州市| 拜城县| 山东| 萍乡市| 曲麻莱县| 台北市| 房山区| 通化市| 彰化市| 新安县| 庐江县| 南部县| 南丹县| 延津县| 郸城县| 万宁市| 三穗县| 房山区| 永年县| 三穗县| 社会| 凤城市| 剑阁县| 宁陕县| 兰考县| 邵阳市|