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

【數(shù)據(jù)結(jié)構(gòu)】手撕?jiǎn)捂湵?/h1>

這篇具有很好參考價(jià)值的文章主要介紹了【數(shù)據(jù)結(jié)構(gòu)】手撕?jiǎn)捂湵?。希望?duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

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

二,接口實(shí)現(xiàn)

????????1,單鏈表的創(chuàng)建

????????2,接口函數(shù)

????????3,動(dòng)態(tài)創(chuàng)立新結(jié)點(diǎn)

????????4,打印

????????5,頭插

????????6,頭刪

????????7,尾插

????????8,尾刪

????????9,查找

????????10,單鏈表在pos位置之后插入x

????????11,單鏈表刪除pos位置之后的值

????????12,銷(xiāo)毀

三,源代碼

LKList.h

LKList.c

四,總結(jié)


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

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

?【數(shù)據(jù)結(jié)構(gòu)】手撕?jiǎn)捂湵?數(shù)據(jù)結(jié)構(gòu),c語(yǔ)言,鏈表

?【數(shù)據(jù)結(jié)構(gòu)】手撕?jiǎn)捂湵?數(shù)據(jù)結(jié)構(gòu),c語(yǔ)言,鏈表

?而在數(shù)據(jù)結(jié)構(gòu)中:

【數(shù)據(jù)結(jié)構(gòu)】手撕?jiǎn)捂湵?數(shù)據(jù)結(jié)構(gòu),c語(yǔ)言,鏈表

注意:

1,從上圖可以看出,鏈?zhǔn)浇Y(jié)構(gòu)在邏輯上是連續(xù)的,但是在物理上不一定連續(xù)

?2,現(xiàn)實(shí)中的結(jié)點(diǎn)一般都是從堆上申請(qǐng)出來(lái)的

?3,從堆上申請(qǐng)的空間,是按照一定的策略來(lái)分配的,兩次申請(qǐng)的空間可能連續(xù),也可能不連續(xù);

?實(shí)際中鏈表的結(jié)構(gòu)非常多樣,今天我們來(lái)寫(xiě)一下單鏈表,此表一會(huì)其他的自然水到渠成!

二,接口實(shí)現(xiàn)

????????1,單鏈表的創(chuàng)建

//無(wú)頭 + 單向 + 非循環(huán)鏈表增刪查改實(shí)現(xiàn)
typedef int LKLDataType;
typedef struct LinKedListNode
{
	LKLDataType data;
	struct LinKedListNode* next;
}LKLNode;

首先創(chuàng)建一個(gè)結(jié)構(gòu)體表示單鏈表,data是存儲(chǔ)的值,LKLDataType是儲(chǔ)存的值的數(shù)據(jù)類(lèi)型,next是結(jié)點(diǎn)----指向下一個(gè);

這里的LKLDataTypeint的重命名,也可以說(shuō)是數(shù)據(jù)類(lèi)型的重命名,這樣統(tǒng)一化方便后續(xù)更改;

????????2,接口函數(shù)

// 動(dòng)態(tài)創(chuàng)立新結(jié)點(diǎn)
LKLNode* BuyLKLNode(LKLDataType x);
// 打印
void LKLPrint(LKLNode* phead);
// 頭插
void LKLNodePushFront(LKLNode** phead, LKLDataType x);
// 頭刪
void LKLNodeBackFront(LKLNode** phead);
// 尾插
void LKLNodePushBack(LKLNode** phead, LKLDataType x);
// 尾刪
void LKLNodePopBack(LKLNode** phead);
// 查找
LKLNode* LKLFind(LKLNode* phead, LKLDataType x);
// 單鏈表在pos位置之后插入x
void LKLInsertAfter(LKLNode* pos, LKLDataType x);
// 單鏈表刪除pos位置之后的值
void LKLEraseAfter(LKLNode* pos);
// 銷(xiāo)毀
void LKLDestroy(LKLNode** plist);

?這是以上要實(shí)現(xiàn)的接口函數(shù);

????????3,動(dòng)態(tài)創(chuàng)立新結(jié)點(diǎn)

//動(dòng)態(tài)創(chuàng)立新結(jié)點(diǎn)
LKLNode* BuyLKLNode(LKLDataType x)
{
	LKLNode* newnode = (LKLNode*)malloc(sizeof(LKLNode));
	newnode->data = x;
	newnode->next = NULL;
	return newnode;
}

后面創(chuàng)立新節(jié)點(diǎn)時(shí)直接調(diào)用此函數(shù),一定要向堆區(qū)申請(qǐng)空間,這樣函數(shù)結(jié)束空間會(huì)保留不會(huì)被回收;

????????4,打印

//打印
void LKLPrint(LKLNode* phead)
{
	assert(phead);
	LKLNode* cur = phead;
	while (cur)
	{
		printf("%d->", cur->data);
		cur = cur->next;
	}
	printf("NULL");
}

打印也就是打印data的值,用cur=phead然后每次打印完都讓cur走向下一個(gè)直到為空結(jié)束;

????????5,頭插

//頭插
void LKLNodePushFront(LKLNode** phead, LKLDataType x)
{
	assert(phead);
	LKLNode* newnode = BuyLKLNode(x);
	newnode->next = *phead;
	*phead = newnode;
}

先斷言一下,既然插入數(shù)據(jù)那就要申請(qǐng)一個(gè)新節(jié)點(diǎn),然后令新節(jié)點(diǎn)的next指向phead然后再令phead指向新節(jié)點(diǎn);

????????6,頭刪

//頭刪
void LKLNodeBackFront(LKLNode** phead)
{
	assert(phead);
	//為空
	assert(*phead);
	//非空
	LKLNode* newnode = (*phead)->next;
	free(*phead);
	*phead = newnode;
}

還是先斷言,有人會(huì)問(wèn)為什么要斷言?xún)纱??其?shí)很好判斷,哪個(gè)需要解引用那個(gè)就需要斷言;

令一個(gè)變量newnode等于頭結(jié)點(diǎn)的下一個(gè),在釋放頭結(jié)點(diǎn),在令頭結(jié)點(diǎn)指向newnode即可;

????????7,尾插

//尾插
void LKLNodePushBack(LKLNode** phead, LKLDataType x)
{
	assert(phead);
	assert(*phead);
	LKLNode* newnode= BuyLKLNode(x);
	LKLNode* cur = *phead;
	//為空
	if (*phead == NULL)
	{
		*phead = newnode;
	}
	//非空
	else
	{
		while (cur->next)
		{
			cur = cur->next;
		}
		cur->next = newnode;
	}
}

還是先斷言判斷,然后要插入一個(gè)新的數(shù)據(jù)先申請(qǐng)一個(gè)新結(jié)點(diǎn),如果頭結(jié)點(diǎn)為空則直接讓頭結(jié)點(diǎn)指向新結(jié)點(diǎn)即可,如果頭結(jié)點(diǎn)不為空,則需要找到next為空的結(jié)點(diǎn),這里用一個(gè)循環(huán)搞定,然后再直接讓next為空的結(jié)點(diǎn)指向新節(jié)點(diǎn)即可;

????????8,尾刪

//尾刪
void LKLNodePopBack(LKLNode** phead)
{
	assert(phead);
	//為空
	assert(*phead);
	//一個(gè)
	if ((*phead)->next==NULL)
	{
		free(*phead);
		*phead = NULL;
	}
	//兩個(gè)及以上
	else
	{
		LKLNode* tail = *phead;

		/*LKLNode* prev = NULL;
		while (tail->next)
		{
			prev = tail;
			tail = tail->next;
		}
		free(prev->next);
		prev->next = NULL;*/

		while (tail->next->next)
		{
			tail = tail->next;
		}
		free(tail->next);
		tail->next = NULL;
	}
}

還是先斷言一下,然后這里有兩種情況鏈表只有一個(gè)結(jié)點(diǎn),兩個(gè)以上結(jié)點(diǎn)的時(shí)候;

當(dāng)鏈表只有一個(gè)結(jié)點(diǎn)也就是頭結(jié)點(diǎn),直接頭刪即可;

兩個(gè)以上結(jié)點(diǎn)的時(shí)候,我這里有兩種解決方案;

方案一常規(guī)法:先用循環(huán)找到next為空的結(jié)點(diǎn),并且在循環(huán)里保留上一個(gè)結(jié)點(diǎn)prev,然后釋放next為空的結(jié)點(diǎn)再讓prevnext指向空即可;

方案二:不需要標(biāo)記上一個(gè)結(jié)點(diǎn),直接原地判斷,判斷結(jié)點(diǎn)的nextnext是否為空,否則繼續(xù)向后推進(jìn),是則釋放結(jié)點(diǎn)的next然后再令自己的next指向空也就相當(dāng)于變成了尾結(jié)點(diǎn);

????????9,查找

// 單鏈表查找
LKLNode* LKLFind(LKLNode* phead, LKLDataType x)
{
	assert(phead);
	LKLNode* pos = phead;
	while (pos)
	{
		if (pos->data == x)
		{
			return pos;
		}
		pos = pos->next;
	}
	return NULL;
}

老樣子先斷言一下,然后直接用循環(huán)遍歷鏈表找到datax的值然后返回此結(jié)點(diǎn)即可;

????????10,單鏈表在pos位置之后插入x

// 單鏈表在pos位置之后插入x
void LKLInsertAfter(LKLNode* pos, LKLDataType x)
{
	assert(pos);
	LKLNode* newnode= BuyLKLNode(x);
	LKLNode* cur = pos;
	newnode->next = cur->next;
	cur->next = newnode;
}

先斷言,要插入數(shù)據(jù)先申請(qǐng)一個(gè)新結(jié)點(diǎn),然后令新結(jié)點(diǎn)的next指向posnext,再返回來(lái)讓posnext指向新結(jié)點(diǎn);

????????11,單鏈表刪除pos位置之后的值

// 單鏈表刪除pos位置之后的值
void LKLEraseAfter(LKLNode* pos)
{
	assert(pos);
	assert(pos->next);
	LKLNode* cur = pos;
	LKLNode* newnode = cur->next->next;
	free(cur->next);
	cur->next = newnode;
}

要?jiǎng)h除值首先要確保得有值,所以開(kāi)始斷言;

先定義一個(gè)變量newnode指向posnextnext,然后再釋放posnext,再令pos指向newnode以達(dá)到刪除之后的效果;

????????12,銷(xiāo)毀

// 單鏈表的銷(xiāo)毀
void LKLDestroy(LKLNode** phead)
{
	assert(phead);
	assert(*phead);
	LKLNode* cur = *phead;
	LKLNode* next = NULL;
	while (cur)
	{
		next = cur->next;
		free(cur);
		cur = next;
	}
}

老樣子那個(gè)需要解引用那個(gè)就先斷言一下,然后用循環(huán)遍歷,先標(biāo)記下一個(gè)結(jié)點(diǎn),然后釋放自己,再讓自己指向標(biāo)記的結(jié)點(diǎn)直到為空結(jié)束;

三,源代碼

LKList.h

#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>

//無(wú)頭 + 單向 + 非循環(huán)鏈表增刪查改實(shí)現(xiàn)
typedef int LKLDataType;
typedef struct LinKedListNode
{
	LKLDataType data;
	struct LinKedListNode* next;
}LKLNode;

// 動(dòng)態(tài)創(chuàng)立新結(jié)點(diǎn)
LKLNode* BuyLKLNode(LKLDataType x);
// 打印
void LKLPrint(LKLNode* phead);
// 頭插
void LKLNodePushFront(LKLNode** phead, LKLDataType x);
// 頭刪
void LKLNodeBackFront(LKLNode** phead);
// 尾插
void LKLNodePushBack(LKLNode** phead, LKLDataType x);
// 尾刪
void LKLNodePopBack(LKLNode** phead);
// 查找
LKLNode* LKLFind(LKLNode* phead, LKLDataType x);
// 單鏈表在pos位置之后插入x
void LKLInsertAfter(LKLNode* pos, LKLDataType x);
// 單鏈表刪除pos位置之后的值
void LKLEraseAfter(LKLNode* pos);
// 銷(xiāo)毀
void LKLDestroy(LKLNode** plist);

LKList.c

#define _CRT_SECURE_NO_WARNINGS 1
#include"LKList.h"

//動(dòng)態(tài)創(chuàng)立新結(jié)點(diǎn)
LKLNode* BuyLKLNode(LKLDataType x)
{
	LKLNode* newnode = (LKLNode*)malloc(sizeof(LKLNode));
	newnode->data = x;
	newnode->next = NULL;
	return newnode;
}
//頭插
void LKLNodePushFront(LKLNode** phead, LKLDataType x)
{
	assert(phead);
	LKLNode* newnode = BuyLKLNode(x);
	newnode->next = *phead;
	*phead = newnode;
}
//頭刪
void LKLNodeBackFront(LKLNode** phead)
{
	assert(phead);
	//為空
	assert(*phead);
	//非空
	LKLNode* newnode = (*phead)->next;
	free(*phead);
	*phead = newnode;
}
//尾插
void LKLNodePushBack(LKLNode** phead, LKLDataType x)
{
	assert(phead);
	assert(*phead);
	LKLNode* newnode= BuyLKLNode(x);
	LKLNode* cur = *phead;
	//為空
	if (*phead == NULL)
	{
		*phead = newnode;
	}
	//非空
	else
	{
		while (cur->next)
		{
			cur = cur->next;
		}
		cur->next = newnode;
	}
}
//尾刪
void LKLNodePopBack(LKLNode** phead)
{
	assert(phead);
	//為空
	assert(*phead);
	//一個(gè)
	if ((*phead)->next==NULL)
	{
		free(*phead);
		*phead = NULL;
	}
	//兩個(gè)及以上
	else
	{
		LKLNode* tail = *phead;

		/*LKLNode* prev = NULL;
		while (tail->next)
		{
			prev = tail;
			tail = tail->next;
		}
		free(prev->next);
		prev->next = NULL;*/

		while (tail->next->next)
		{
			tail = tail->next;
		}
		free(tail->next);
		tail->next = NULL;
	}
}
// 單鏈表查找
LKLNode* LKLFind(LKLNode* phead, LKLDataType x)
{
	assert(phead);
	LKLNode* pos = phead;
	while (pos)
	{
		if (pos->data == x)
		{
			return pos;
		}
		pos = pos->next;
	}
	return NULL;
}
// 單鏈表在pos位置之后插入x
void LKLInsertAfter(LKLNode* pos, LKLDataType x)
{
	assert(pos);
	LKLNode* newnode= BuyLKLNode(x);
	LKLNode* cur = pos;
	newnode->next = cur->next;
	cur->next = newnode;
}
// 單鏈表刪除pos位置之后的值
void LKLEraseAfter(LKLNode* pos)
{
	assert(pos);
	assert(pos->next);
	LKLNode* cur = pos;
	LKLNode* newnode = cur->next->next;
	free(cur->next);
	cur->next = newnode;
}

// 單鏈表的銷(xiāo)毀
void LKLDestroy(LKLNode** phead)
{
	assert(phead);
	assert(*phead);
	LKLNode* cur = *phead;
	LKLNode* next = NULL;
	while (cur)
	{
		next = cur->next;
		free(cur);
		cur = next;
	}
}
//打印
void LKLPrint(LKLNode* phead)
{
	assert(phead);
	LKLNode* cur = phead;
	while (cur)
	{
		printf("%d->", cur->data);
		cur = cur->next;
	}
	printf("NULL");
}

四,總結(jié)

做數(shù)據(jù)結(jié)構(gòu)的題目畫(huà)圖很重要,小伙伴們剛開(kāi)始喜歡用腦子去構(gòu)圖想象,但遇到復(fù)雜的情況會(huì)紊亂的,畫(huà)圖最為可觀方便,可以培養(yǎng)一個(gè)良好的畫(huà)圖習(xí)慣;

如有不足之處歡迎來(lái)補(bǔ)充交流!

完結(jié)。。。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-686161.html


到了這里,關(guān)于【數(shù)據(jù)結(jié)構(gòu)】手撕?jiǎn)捂湵淼奈恼戮徒榻B完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【數(shù)據(jù)結(jié)構(gòu)】手撕雙向鏈表

    【數(shù)據(jù)結(jié)構(gòu)】手撕雙向鏈表

    目錄 前言 1. 雙向鏈表? 帶頭雙向循環(huán)鏈表的結(jié)構(gòu) 2. 鏈表的實(shí)現(xiàn) 2.1 初始化 2.2 尾插 2.3 尾刪 2.4 頭插 2.5 頭刪 2.6 在pos位置之前插入 2.7 刪除pos位置 3.雙向鏈表完整源碼 List.h List.c 在上一期中我們介紹了單鏈表,也做了一些練習(xí)題,在一些題中使用單鏈表會(huì)十分繁瑣。因?yàn)閱捂?/p>

    2024年02月05日
    瀏覽(27)
  • 數(shù)據(jù)結(jié)構(gòu)-鏈表-單鏈表(3)

    數(shù)據(jù)結(jié)構(gòu)-鏈表-單鏈表(3)

    目錄 1. 順序表的缺陷 2. 單鏈表 2.1 單鏈表的基本結(jié)構(gòu)與接口函數(shù) 2.2 重要接口 創(chuàng)建新節(jié)點(diǎn)的函數(shù): 2.2.1 尾插 2.2.2?頭插 2.2.3?尾刪 2.2.4?頭刪 2.2.5?查找 2.2.6?插入 2.2.7?刪除 2.2.8?從pos后面插入 2.2.9?從pos后面刪除 3. 鏈表的缺陷與優(yōu)勢(shì): 4. 鏈表與順序表比較 寫(xiě)在最后: 為什么

    2024年01月17日
    瀏覽(582)
  • 數(shù)據(jù)結(jié)構(gòu)---手撕圖解單鏈表---phead的多種傳參方式對(duì)比和輔助理解

    數(shù)據(jù)結(jié)構(gòu)---手撕圖解單鏈表---phead的多種傳參方式對(duì)比和輔助理解

    前面我們知道了順序表,當(dāng)順序表的容量到達(dá)上限后就需要申請(qǐng)新的空間,而申請(qǐng)新空間就會(huì)遇到一些問(wèn)題 1.當(dāng)利用realloc函數(shù)進(jìn)行申請(qǐng)新空間時(shí),會(huì)涉及到開(kāi)辟新空間–拷貝原有數(shù)據(jù)–釋放原空間這三個(gè)步驟,而這三個(gè)步驟會(huì)有不小的損耗 2.增容一般是2倍的增長(zhǎng),勢(shì)必會(huì)有

    2024年02月17日
    瀏覽(23)
  • 數(shù)據(jù)結(jié)構(gòu):手撕圖解單鏈表---phead的多種傳參方式對(duì)比和輔助理解

    數(shù)據(jù)結(jié)構(gòu):手撕圖解單鏈表---phead的多種傳參方式對(duì)比和輔助理解

    前面我們知道了順序表,當(dāng)順序表的容量到達(dá)上限后就需要申請(qǐng)新的空間,而申請(qǐng)新空間就會(huì)遇到一些問(wèn)題 1.當(dāng)利用realloc函數(shù)進(jìn)行申請(qǐng)新空間時(shí),會(huì)涉及到開(kāi)辟新空間–拷貝原有數(shù)據(jù)–釋放原空間這三個(gè)步驟,而這三個(gè)步驟會(huì)有不小的損耗 2.增容一般是2倍的增長(zhǎng),勢(shì)必會(huì)有

    2024年02月15日
    瀏覽(21)
  • 【數(shù)據(jù)結(jié)構(gòu)與算法】手撕鏈表OJ題

    【數(shù)據(jù)結(jié)構(gòu)與算法】手撕鏈表OJ題

    給你一個(gè)鏈表的頭節(jié)點(diǎn) head 和一個(gè)整數(shù) val ,請(qǐng)你刪除鏈表中所有滿(mǎn)足 Node.val == val 的節(jié)點(diǎn),并返回 新的頭節(jié)點(diǎn) 思路一 :一種比較普遍的方式,邊遍歷邊找不同。我們可以通過(guò)定義兩個(gè)指針,一個(gè)指向頭節(jié)點(diǎn),一個(gè)置為NULL。當(dāng)遇到值為相同的時(shí)候,直接跳過(guò)去。指向下一位

    2024年02月10日
    瀏覽(19)
  • 【手撕數(shù)據(jù)結(jié)構(gòu)】(三)順序表和鏈表

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

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

    2024年02月05日
    瀏覽(97)
  • 數(shù)據(jù)結(jié)構(gòu)之手撕鏈表(講解?源代碼)

    數(shù)據(jù)結(jié)構(gòu)之手撕鏈表(講解?源代碼)

    我們?cè)趯W(xué)習(xí)過(guò)順序表之后,會(huì)發(fā)現(xiàn)兩點(diǎn)不是很優(yōu)秀的操作: 1.順序表的 頭插和中間的插入,頭刪和中間的刪除: ???????? 需要不斷的覆蓋數(shù)據(jù),時(shí)間復(fù)雜度是O(n),當(dāng)我們的順序表存入100w個(gè)數(shù)據(jù)的時(shí)候,花費(fèi)的時(shí)間是非常之多的。 2. 動(dòng)態(tài)開(kāi)辟空間: ? ? ? ? a. 一般動(dòng)態(tài)

    2024年02月08日
    瀏覽(28)
  • 【數(shù)據(jù)結(jié)構(gòu)】- 鏈表之單鏈表(下)

    【數(shù)據(jù)結(jié)構(gòu)】- 鏈表之單鏈表(下)

    未來(lái)藏在迷霧中 叫人看來(lái)膽怯 帶你踏足其中 就會(huì)云開(kāi)霧散 本章是關(guān)于數(shù)據(jù)結(jié)構(gòu)中的鏈表之單鏈表(下) 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 1.2.1 在pos位置插入(也就是pos位置之前) 流程圖 多個(gè)節(jié)點(diǎn) 一個(gè)節(jié)點(diǎn) 1.2.2 在pos位置之后插入 流程圖: 注意: 下面這種寫(xiě)

    2023年04月23日
    瀏覽(103)
  • [數(shù)據(jù)結(jié)構(gòu)]鏈表之單鏈表(詳解)

    [數(shù)據(jù)結(jié)構(gòu)]鏈表之單鏈表(詳解)

    在學(xué)習(xí) 鏈表 之前,我們已經(jīng)學(xué)習(xí)了 順序表 了 根據(jù) 順序表 的特點(diǎn),我們可以發(fā)現(xiàn) 順序表 有優(yōu)點(diǎn),也有一些缺陷。 所以根據(jù) 順序表 的缺點(diǎn),鏈表就橫空出世啦~ **概念:鏈表是一種物理存儲(chǔ)結(jié)構(gòu)上非連續(xù)、非順序的存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過(guò)鏈表中的指針鏈接次

    2023年04月08日
    瀏覽(95)
  • 【數(shù)據(jù)結(jié)構(gòu)】-- 單鏈表 vs 雙向鏈表

    【數(shù)據(jù)結(jié)構(gòu)】-- 單鏈表 vs 雙向鏈表

    ?? 個(gè)人主頁(yè): 白子寰 ?? 分類(lèi)專(zhuān)欄: python從入門(mén)到精通,魔法指針,進(jìn)階C++,C語(yǔ)言,C語(yǔ)言題集,C語(yǔ)言實(shí)現(xiàn)游戲 ?? 希望得到您的訂閱和支持~ ?? 堅(jiān)持創(chuàng)作博文(平均質(zhì)量分82+),分享更多關(guān)于深度學(xué)習(xí)、C/C++,python領(lǐng)域的優(yōu)質(zhì)內(nèi)容?。ㄏM玫侥年P(guān)注~)? 目錄 ?單鏈表和

    2024年04月17日
    瀏覽(95)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包