国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【數(shù)據(jù)結(jié)構(gòu)】順序表和鏈表

這篇具有很好參考價值的文章主要介紹了【數(shù)據(jù)結(jié)構(gòu)】順序表和鏈表。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.線性表

線性表(linear list)是n個具有相同特性的數(shù)據(jù)元素的有限序列。 線性表是一種在實際中廣泛使 用的數(shù)據(jù)結(jié)構(gòu),常見的線性表:順序表、鏈表、棧、隊列、字符串...

線性表在邏輯上是線性結(jié)構(gòu),也就說是連續(xù)的一條直線。但是在物理結(jié)構(gòu)上并不一定是連續(xù)的, 線性表在物理上存儲時,通常以數(shù)組和鏈?zhǔn)浇Y(jié)構(gòu)的形式存儲。

【數(shù)據(jù)結(jié)構(gòu)】順序表和鏈表,C數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表

【數(shù)據(jù)結(jié)構(gòu)】順序表和鏈表,C數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表

2.順序表

2.1概念及結(jié)構(gòu)

順序表是用一段物理地址連續(xù)的存儲單元依次存儲數(shù)據(jù)元素的線性結(jié)構(gòu),一般情況下采用數(shù)組存 儲。在數(shù)組上完成數(shù)據(jù)的增刪查改。

順序表一般可以分為:

1. 靜態(tài)順序表:使用定長數(shù)組存儲元素。

就是給定長度的數(shù)組和有效數(shù)據(jù)個數(shù)。

2. 動態(tài)順序表:使用動態(tài)開辟的數(shù)組存儲。

指的是在堆區(qū)開辟出來的動態(tài)數(shù)組,給定數(shù)據(jù)個數(shù)和容量空間大小。

2.2接口實現(xiàn)

靜態(tài)順序表只適用于確定知道需要存多少數(shù)據(jù)的場景。靜態(tài)順序表的定長數(shù)組導(dǎo)致N定大了,空 間開多了浪費,開少了不夠用。所以現(xiàn)實中基本都是使用動態(tài)順序表,根據(jù)需要動態(tài)的分配空間 大小,所以下面我們實現(xiàn)動態(tài)順序表。

//順序表的動態(tài)儲存
typedef int SLDataType;
typedef struct SeqList
{
	SLDataType* a;	//指向動態(tài)開辟的數(shù)組
	int size;		//有效數(shù)據(jù)個數(shù)
	int capacity;	//容量空間的大小
}SL;

//基本增刪查改接口
void SLInit(SL* ps);	//順序表初始化

void SLPushBack(SL* ps,SLDataType x);	//順序表尾插
void SLPushFront(SL* ps,SLDataType x);	//順序表頭插
void SLPopBack(SL* ps);		//順序表尾刪
void SLPopFront(SL* ps);	//順序表頭刪

void SLInsert(SL* ps, int pos, SLDataType x);	//順序表在pos位插入x
void SLErase(SL* ps, int pos);					//順序表刪除pos位的值
int SLFind(SL* psl, SLDataType x);				//順序表查找
void SLPrint(SL* ps);		//順序表的打印
void SLDestroy(SL* ps);		//順序表的銷毀

順序表難度較低,接下來我們主要對鏈表進行刨析,理解了鏈表,順序表就手到擒來了。

3.鏈表

3.1鏈表的結(jié)構(gòu)及概念

概念:鏈表是一種物理存儲結(jié)構(gòu)上非連續(xù)、非順序的存儲結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過鏈表 中的指針鏈接次序?qū)崿F(xiàn)的 。

其實鏈表就好比作一輛火車,由一條牽引鏈鏈接每一節(jié)車廂。

【數(shù)據(jù)結(jié)構(gòu)】順序表和鏈表,C數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表

現(xiàn)實數(shù)據(jù)結(jié)構(gòu)如下;

【數(shù)據(jù)結(jié)構(gòu)】順序表和鏈表,C數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表

注意:

  1. 從上圖可知,鏈?zhǔn)浇Y(jié)構(gòu)邏輯上是連續(xù)的,但是在物理上不一定是連續(xù)的。
  2. 現(xiàn)實中的節(jié)點是從堆區(qū)上申請出來的。
  3. 從堆區(qū)上申請出來的空間,是按照一定的策略分配的,可能連續(xù),也可能不連續(xù)。

3.2鏈表的分類

鏈表可以分為8種鏈表結(jié)構(gòu):

1.單向或者雙向

【數(shù)據(jù)結(jié)構(gòu)】順序表和鏈表,C數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表

2.帶頭或者不帶頭

【數(shù)據(jù)結(jié)構(gòu)】順序表和鏈表,C數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表

3.循環(huán)或不循環(huán)

【數(shù)據(jù)結(jié)構(gòu)】順序表和鏈表,C數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表

還有倆種分別是:無頭單向非循環(huán)鏈表、帶頭雙向循環(huán)鏈表。

【數(shù)據(jù)結(jié)構(gòu)】順序表和鏈表,C數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表

1. 無頭單向非循環(huán)鏈表:結(jié)構(gòu)簡單,一般不會單獨用來存數(shù)據(jù)。實際中更多是作為其他數(shù)據(jù)結(jié) 構(gòu)的子結(jié)構(gòu),如哈希桶、圖的鄰接表等等。

2. 帶頭雙向循環(huán)鏈表:結(jié)構(gòu)最復(fù)雜,一般用在單獨存儲數(shù)據(jù)。實際中使用的鏈表數(shù)據(jù)結(jié)構(gòu),都 是帶頭雙向循環(huán)鏈表。另外這個結(jié)構(gòu)雖然結(jié)構(gòu)復(fù)雜,但是使用代碼實現(xiàn)以后會發(fā)現(xiàn)結(jié)構(gòu)會帶 來很多優(yōu)勢,實現(xiàn)反而簡單了。

?3.3鏈表的實現(xiàn)

typedef int SLTDataType;
typedef struct SListNode
{
	SLTDataType data;
	struct SListNode* next;
}SLTNode;

SLTNode* BuySLTNode(SLTDataType x);		//動態(tài)申請節(jié)點
void SListPrint(SLTNode* plist);		//打印單鏈表

void SListPushBack(SLTNode** pphead, SLTDataType x);	//單鏈表尾插
void SListPushFront(SLTNode** pphead, SLTDataType x);	//單鏈表頭插
void SListPopBack(SLTNode** pphead);	//單鏈表尾刪
void SListPopFront(SLTNode** pphead);	//單鏈表頭刪

SLTNode* SLFind(SLTNode* phead, SLTDataType x);			//單鏈表查找

3.4雙向鏈表的實現(xiàn)

typedef int LTDataType;
typedef struct ListNode
{
	LTDataType data;
	struct ListNode* next;
	struct ListNode* prev;
}ListNode;

ListNode* ListCreate();		// 創(chuàng)建返回鏈表的頭結(jié)點.
void ListDestroy(ListNode* pHead);		// 雙向鏈表銷毀
void ListPrint(ListNode* pHead);		// 雙向鏈表打印
void ListPushBack(ListNode* pHead, LTDataType x);	// 雙向鏈表尾插
void ListPushFront(ListNode* pHead,LTDataType x);	// 雙向鏈表頭插
void ListPopBack(ListNode* pHead);		// 雙向鏈表尾刪
void ListPopFront(ListNode* pHead);		// 雙向鏈表頭刪

bool LTEmpty(ListNode* pHead);

ListNode* ListFind(ListNode* pHead, LTDataType x);	// 雙向鏈表查找
void ListErase(ListNode* pos);		// 雙向鏈表刪除pos位置的結(jié)點
void LTInsert(ListNode* pos, LTDataType x);		// 雙向鏈表在pos的前面進行插入

4.順序表和鏈表的區(qū)別

【數(shù)據(jù)結(jié)構(gòu)】順序表和鏈表,C數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表

好啦,本節(jié)知識就到這啦,關(guān)注博主,讓我們一起開碼??!?文章來源地址http://www.zghlxwxcb.cn/news/detail-807455.html

到了這里,關(guān)于【數(shù)據(jù)結(jié)構(gòu)】順序表和鏈表的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【手撕數(shù)據(jù)結(jié)構(gòu)】(三)順序表和鏈表

    【手撕數(shù)據(jù)結(jié)構(gòu)】(三)順序表和鏈表

    ???線性表是n個具有相同特性的數(shù)據(jù)元素的有限序列。線性表是一種在實際中廣泛使用的數(shù)據(jù)結(jié)構(gòu),常見的線性表:順序表、鏈表、棧、隊列、字符串… ???線性表在邏輯上是線性結(jié)構(gòu),也就說是一條連續(xù)的直線。但是在物理結(jié)構(gòu)上并不一定是連續(xù)的,線性表在物理上存儲

    2024年02月05日
    瀏覽(97)
  • 數(shù)據(jù)結(jié)構(gòu)奇妙旅程之順序表和鏈表

    數(shù)據(jù)結(jié)構(gòu)奇妙旅程之順序表和鏈表

    ??????? write in front???????? ?????????大家好,我是xiaoxie.希望你看完之后,有不足之處請多多諒解,讓我們一起共同進步????? . ?? ?xiaoxie?????????—CSDN博客 本文由xiaoxie??????????原創(chuàng) CSDN?如需轉(zhuǎn)載還請通知???? 個人主頁:xiaoxie??

    2024年02月05日
    瀏覽(99)
  • 數(shù)據(jù)結(jié)構(gòu)修煉第二篇:順序表和鏈表

    數(shù)據(jù)結(jié)構(gòu)修煉第二篇:順序表和鏈表

    第一章 時間復(fù)雜度和空間復(fù)雜度 第二章 順序表,列表 第三章 棧和隊列 第四章 二叉樹 第五章 排序 作者:??樂言?? 簡介:??大一學(xué)生,目前在致力于c/c++/python,高數(shù)的學(xué)習(xí),有問題盡管問我,關(guān)注后私聊! 持續(xù)更新專欄:《c進階》,《數(shù)據(jù)結(jié)構(gòu)修煉》 ?? (優(yōu)質(zhì)好文持

    2024年02月02日
    瀏覽(583)
  • 【數(shù)據(jù)結(jié)構(gòu)篇C++實現(xiàn)】- 線性表 - 順序表和鏈表

    【數(shù)據(jù)結(jié)構(gòu)篇C++實現(xiàn)】- 線性表 - 順序表和鏈表

    友情鏈接:C/C++系列系統(tǒng)學(xué)習(xí)目錄 故事導(dǎo)入: 幼兒園放學(xué)時,一個班級的小朋友,一個跟著一個排隊出校,有一個打頭,有一個收尾,當(dāng)中的小朋友每一個都知道他前面和后面的一個是誰,就如同一根線把他們串聯(lián)了起來。如此具有像線一樣的性質(zhì)的表就叫線性表 線性表(

    2024年02月07日
    瀏覽(98)
  • 初階數(shù)據(jù)結(jié)構(gòu)之---順序表和鏈表(C語言)

    初階數(shù)據(jù)結(jié)構(gòu)之---順序表和鏈表(C語言)

    線性表: 線性表(linear list)是n個具有相同特性的數(shù)據(jù)元素的有限序列。 線性表是一種在實際中廣泛使用的數(shù)據(jù)結(jié)構(gòu)。線性表在邏輯上是線性結(jié)構(gòu),也就是說是連續(xù)的一條直線。但在物理上并不一定是連續(xù)的。線性表在物理上存儲時,通常以 數(shù)組 和 鏈?zhǔn)浇Y(jié)構(gòu) 的形式存儲。

    2024年02月22日
    瀏覽(96)
  • <數(shù)據(jù)結(jié)構(gòu)>順序表和鏈表的比較|緩存命中率

    <數(shù)據(jù)結(jié)構(gòu)>順序表和鏈表的比較|緩存命中率

    ??前言:通過之前對順序表和鏈表的實現(xiàn),我們可以發(fā)現(xiàn)在增刪查改某些操作上兩者的效率前言有所差異,本篇文章將總結(jié)二者的異同。 順序表的實現(xiàn) http://t.csdn.cn/Lxyg2 單鏈表的實現(xiàn) http://t.csdn.cn/rHgjG 雙鏈表的實現(xiàn) http://t.csdn.cn/j3amO ??順序表通過數(shù)組來實現(xiàn)的,所以在物理

    2024年02月05日
    瀏覽(96)
  • 數(shù)據(jù)結(jié)構(gòu)(王道)——線性表之靜態(tài)鏈表&順序表和鏈表的比較

    數(shù)據(jù)結(jié)構(gòu)(王道)——線性表之靜態(tài)鏈表&順序表和鏈表的比較

    ? 如何定義一個靜態(tài)鏈表 ? ? 初始化靜態(tài)鏈表: ? 靜態(tài)鏈表的查找、插入、刪除 ? ? ? ? ? 創(chuàng): 銷: ? 增、刪: ? 查: ? 順序表、鏈表該如何選擇? ?

    2024年02月16日
    瀏覽(719)
  • 順序表和鏈表【數(shù)據(jù)結(jié)構(gòu)】【基于C語言實現(xiàn)】【一站式速通】

    順序表和鏈表【數(shù)據(jù)結(jié)構(gòu)】【基于C語言實現(xiàn)】【一站式速通】

    目錄 順序表 順序表的優(yōu)點 順序表的實現(xiàn) 1.結(jié)構(gòu)體的定義 2.初始化數(shù)組 ?3.插入數(shù)據(jù) 4.其余接口函數(shù)的實現(xiàn) 5.釋放內(nèi)存 順序表的缺陷 單向鏈表 單向鏈表的優(yōu)點 單向鏈表的實現(xiàn) 1.鏈表的定義? 2.鏈表的初始化 3.其余接口函數(shù)的實現(xiàn) 5.釋放內(nèi)存 單向鏈表的缺陷 雙向鏈表 雙向鏈

    2024年01月24日
    瀏覽(95)
  • 探索樹形數(shù)據(jù)結(jié)構(gòu),通識樹、森林與二叉樹的基礎(chǔ)知識(專有名詞),進一步利用順序表和鏈表表示、遍歷和線索樹形結(jié)構(gòu)

    探索樹形數(shù)據(jù)結(jié)構(gòu),通識樹、森林與二叉樹的基礎(chǔ)知識(專有名詞),進一步利用順序表和鏈表表示、遍歷和線索樹形結(jié)構(gòu)

    ? 結(jié)點之間有分支,具有層次關(guān)系 樹的定義 : 樹 (tree)是n(n≥0)個有限集。 若n = 0,則稱為空樹; 若n 0,則它滿足如下兩個條件: 有且僅有一個特定的稱為根(Root)的結(jié)點; 其余結(jié)點可分為m(m≥0)個互不相交的有限集T1,T2,T3,.....,Tm,其中每一個集合本身又是一棵樹,并稱為根的

    2024年02月01日
    瀏覽(101)
  • 順序表和鏈表

    順序表和鏈表

    首先,數(shù)據(jù)結(jié)構(gòu)中的順序表和鏈表都屬于線性表。何為線性表?線性表可以描述為: 具有相同數(shù)據(jù)類型的n個數(shù)據(jù)元素的有限序列。 形象理解線性表的要素: 幼兒園小朋友放學(xué),需要在校內(nèi)站成一隊,等待家長來接。這是一個 有限 的序列。 總共有幾個小朋友,稱之為線性表

    2024年02月06日
    瀏覽(89)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包