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

【數(shù)據(jù)結(jié)構(gòu)】棧和隊(duì)列超詳解!(Stack && Queue)

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


前言

【數(shù)據(jù)結(jié)構(gòu)】棧和隊(duì)列超詳解!(Stack && Queue),數(shù)據(jù)結(jié)構(gòu)


一、棧

1、棧的基本概念

:一種特殊的線性表,其只允許在固定的一端進(jìn)行插入和刪除元素操作。進(jìn)行數(shù)據(jù)插入和刪除操作的一端稱為棧頂,另一端稱為棧底。棧中的數(shù)據(jù)元素遵守后進(jìn)先出LIFO(Last In First Out)的原則
壓棧棧的插入操作叫做進(jìn)棧/壓棧/入棧,入數(shù)據(jù)在棧頂。
出棧棧的刪除操作叫做出棧。出數(shù)據(jù)也在棧頂

【數(shù)據(jù)結(jié)構(gòu)】棧和隊(duì)列超詳解!(Stack && Queue),數(shù)據(jù)結(jié)構(gòu)

2、棧的實(shí)現(xiàn)(數(shù)組實(shí)現(xiàn))

棧的實(shí)現(xiàn)一般可以使用數(shù)組或者鏈表實(shí)現(xiàn),相對(duì)而言數(shù)組的結(jié)構(gòu)實(shí)現(xiàn)更優(yōu)一些。因?yàn)閿?shù)組在尾上插入數(shù)據(jù)的代價(jià)比較小
【數(shù)據(jù)結(jié)構(gòu)】棧和隊(duì)列超詳解!(Stack && Queue),數(shù)據(jù)結(jié)構(gòu)

3、棧的基本操作

壓棧:棧的插入操作,也叫進(jìn)棧/入棧/壓棧,在棧頂進(jìn)行數(shù)據(jù)操作。
出棧:棧的刪除操作,也是在棧頂進(jìn)行數(shù)據(jù)刪除的。

3.1 棧的結(jié)構(gòu)設(shè)計(jì)

typedef int STDataType;//方便修改類型
typedef struct Stack
{
	STDataType* a;
	int top;
	int capacity;
}ST;

3.2 棧常見的基本函數(shù)接口

//初始化
void STInit(ST* pst);
//銷毀棧
void STDestroy(ST* pst);
//入棧
void STPush(ST* pst, STDataType x);
//出棧
void STPop(ST* pst);
//判空
bool STEmpty(ST* pst);
//長度
int STSize(ST* pst);
//棧頂
STDataType STTop(ST* pst);

4、棧的實(shí)現(xiàn)

4.1 初始化棧

//初始化
void STInit(ST* pst)
{
	assert(pst);
	pst->a = NULL;
	pst->top = 0;//指向棧頂下一個(gè)元素,若等于-1則指向棧頂元素,兩種任選
	pst->capacity = 0;
}

4.2 棧的銷毀

//銷毀棧
void STDestroy(ST* pst)
{
	assert(pst);
	tree(pst->a);
	pst->a = NULL;
	pst->top = 0;
	pst->capacity = 0;
}

4.3 入棧

【數(shù)據(jù)結(jié)構(gòu)】棧和隊(duì)列超詳解!(Stack && Queue),數(shù)據(jù)結(jié)構(gòu)
代碼:

void STPush(ST* pst, STDataType x)
{
	assert(pst);
	//判斷棧是否已滿,滿了就擴(kuò)容
	if (pst->top == pst->capacity)
	{
		//使用三目運(yùn)算符進(jìn)行第一次開辟空間和后續(xù)擴(kuò)容空間
		int newcapacity = pst->capacity == 0 ? 4 : pst->capacity * 2;
		STDataType* tmp = (STDataType*)realloc(pst->a, sizeof(STDataType) * newcapacity);
		//判斷realloc是否開辟成功
		if (tmp == NULL)
		{
			perror("realloc fail");
			return;
		}
		//賦新值
		pst->a = tmp;
		pst->capacity = newcapacity;
	}
	//插入
	pst->a[pst->top] = x;
	pst->top++;
}

4.4 出棧

【數(shù)據(jù)結(jié)構(gòu)】棧和隊(duì)列超詳解!(Stack && Queue),數(shù)據(jù)結(jié)構(gòu)
代碼:

//出棧
void STPop(ST* pst)
{
	assert(pst);
	assert(pst->top > 0);
	pst->top--;
}

4.5 判空

//判空
bool STEmpty(ST* pst)
{
	assert(pst);  
	//返回值為0為假,非零為真
	return pst->top == 0;
}

4.6 長度

//長度
int STSize(ST* pst)
{
	assert(pst);
	return pst->top;
}

4.7 獲取棧頂元素

注意:若棧頂指針初始化為pst->top = 0,即棧頂指針指向棧頂元素的下一個(gè)位置,則入棧操作變?yōu)閜st->a[pst->top++],出棧操作為pst->a[- -pst->top]。因?yàn)闂m斨羔樔舫跏蓟癁?0 時(shí),則棧頂指針始終指向順序棧將要入棧的位置,也就是棧頂指針的下標(biāo)就是入棧元素的下標(biāo)。

//棧頂
STDataType STTop(ST* pst)
{
	assert(pst);
	return pst->a[pst->top - 1];
}

完整代碼

Stack.h

#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
#include<stdbool.h>

typedef int STDataType;
typedef struct Stack
{
	STDataType* a;
	int top;
	int capacity;
}ST;

//初始化
void STInit(ST* pst);
//銷毀棧
void STDestroy(ST* pst);
//入棧
void STPush(ST* pst, STDataType x);
//出棧
void STPop(ST* pst);
//判空
bool STEmpty(ST* pst);
//長度
int STSize(ST* pst);
//棧頂
STDataType STTop(ST* pst);

Stack.c

#include"Stack.h"

//初始化
void STInit(ST* pst)
{
	assert(pst);
	pst->a = NULL;
	pst->top = 0;//指向棧頂下一個(gè)元素
	pst->capacity = 0;
}
//銷毀棧
void STDestroy(ST* pst)
{
	assert(pst);
	tree(pst->a);
	pst->a = NULL;
	pst->top = 0;
	pst->capacity = 0;
}
//入棧
void STPush(ST* pst, STDataType x)
{
	assert(pst);
	if (pst->top == pst->capacity)
	{
		int newcapacity = pst->capacity == 0 ? 4 : pst->capacity * 2;
		STDataType* tmp = (STDataType*)realloc(pst->a, sizeof(STDataType) * newcapacity);
		if (tmp == NULL)
		{
			perror("realloc fail");
			return;
		}
		pst->capacity = newcapacity;
		pst->a = tmp;
	}
	pst->a[pst->top] = x;
	pst->top++;	
}
//出棧
void STPop(ST* pst)
{
	assert(pst);
	assert(pst->top > 0);
	pst->top--;
}
//判空
bool STEmpty(ST* pst)
{
	assert(pst);
	return pst->top == 0;
}
//長度
int STSize(ST* pst)
{
	assert(pst);
	return pst->top;
}
//棧頂
STDataType STTop(ST* pst)
{
	assert(pst);
	return pst->a[pst->top - 1];
}

Test.c

#include"Stack.h"

int main()
{
	ST st;
	//初始化
	STInit(&st);
	//插入+刪除
	STPush(&st, 1);
	STPush(&st, 2);
	STPush(&st, 3);
	STPush(&st, 4);
	STPush(&st, 5);
	STPop(&st);
	STPop(&st);
	//長度
	STSize(&st);
	//棧頂
	STTop(&st);
	//銷毀
	STDestroy(&st);
	return 0;
}

二、隊(duì)列

1、隊(duì)列的結(jié)構(gòu)及概念

隊(duì)列:只允許在一端進(jìn)行插入數(shù)據(jù)操作,在另一端進(jìn)行刪除數(shù)據(jù)操作的特殊線性表,隊(duì)列具有先進(jìn)先出FIFO(First In First Out) 入隊(duì)列:進(jìn)行插入操作的一端稱為隊(duì)尾 出隊(duì)列:進(jìn)行刪除操作的一端稱為隊(duì)頭
【數(shù)據(jù)結(jié)構(gòu)】棧和隊(duì)列超詳解!(Stack && Queue),數(shù)據(jù)結(jié)構(gòu)

2、隊(duì)列的實(shí)現(xiàn)(單鏈表實(shí)現(xiàn))

隊(duì)列也可以數(shù)組和鏈表的結(jié)構(gòu)實(shí)現(xiàn),使用鏈表的結(jié)構(gòu)實(shí)現(xiàn)更優(yōu)一些,因?yàn)槿绻褂脭?shù)組的結(jié)構(gòu),出隊(duì)列在數(shù)組頭上出數(shù)據(jù),效率會(huì)比較低。
【數(shù)據(jù)結(jié)構(gòu)】棧和隊(duì)列超詳解!(Stack && Queue),數(shù)據(jù)結(jié)構(gòu)
下面話不多說,直接開始代碼實(shí)現(xiàn)

1、隊(duì)列的鏈?zhǔn)浇Y(jié)構(gòu)設(shè)計(jì)

//鏈?zhǔn)浇Y(jié)構(gòu) 表示隊(duì)列
typedef int QDataType;
typedef struct QueueNode
{
	struct QueueNode* next;
	QDataType val;                                                                          
}QNode;
//隊(duì)列的結(jié)構(gòu)
typedef struct Queue
{
	QNode* phead;
	QNode* ptail;
	int size;
}Queue;

2、常用的功能接口

//初始化
void QueueInit(Queue* pq);
//銷毀隊(duì)列
void QueueDeatroy(Queue* pq);
//隊(duì)尾入列
void QueuePush(Queue* pq, QDataType x);
//隊(duì)頭出列
void QueuePop(Queue* pq);
//獲取隊(duì)列頭部元素
QDataType QueueFront(Queue* pq);
//獲取隊(duì)列尾部元素
QDataType QueueBack(Queue* pq);
//檢測隊(duì)列是否為空,如果為空返回非零結(jié)果,如果非空返回0 
bool QueueEmpty(Queue* pq);
//獲取隊(duì)列中有效元素個(gè)數(shù)
int QueueSize(Queue* pq);
2.1、初始化隊(duì)列

只需要將頭尾指針都指向空即可,元素個(gè)數(shù)為零

//初始化
void QueueInit(Queue* pq)
{
	assert(pq);
	pq->phead = NULL;
	pq->ptail = NULL;
	pq->size = 0;
}
2.2、銷毀隊(duì)列

遍歷鏈表,從頭到尾依次刪除結(jié)點(diǎn),最后將頭尾指針指向空,元素個(gè)數(shù)為0。

//銷毀隊(duì)列
void QueueDeatroy(Queue* pq)
{
	assert(pq);
	QNode* cur = pq->phead;
	while (cur)
	{
		QNode* next = cur->next;
		free(cur);
		cur = next;
	}
	pq->phead = NULL;
	pq->ptail = NULL;
	pq->size = 0;
	
}
2.3、入隊(duì)列

創(chuàng)建新節(jié)點(diǎn),若隊(duì)列為空,則將頭指針和尾指針都指向新創(chuàng)建的節(jié)點(diǎn),若不為空,則尾插,因?yàn)槭擎準(zhǔn)酱鎯?chǔ),所以和單鏈表的尾插一樣,將尾指針的next指向該節(jié)點(diǎn),再把該節(jié)點(diǎn)設(shè)為新的尾節(jié)點(diǎn)

void QueuePush(Queue* pq, QDataType x)
{
	assert(pq);
	QNode* newnode = (QNode*)malloc(sizeof(QNode));
	if (newnode == NULL)
	{
		perror("malloc fail");
		return;
	}
	newnode->val = x;
	newnode->next = NULL;

	if (pq->ptail == NULL)
	{
		pq->ptail = pq->phead = newnode;
	}
	else
	{
		pq->ptail->next = newnode;
		pq->ptail = newnode;
	}
	pq->size++;
}
2.4、出隊(duì)列

注意:出列要考慮隊(duì)列是空還是只有一個(gè)結(jié)點(diǎn)又或者有多個(gè)結(jié)點(diǎn),為空則在代碼第一步就報(bào)錯(cuò),若只有一個(gè)結(jié)點(diǎn),則直接刪除該結(jié)點(diǎn),并將頭尾倆指針指向空,若不止一個(gè)結(jié)點(diǎn),可以創(chuàng)建一個(gè)臨時(shí)指針來記錄當(dāng)前頭指針,然后尾指針往后遍歷,再free掉創(chuàng)建的臨時(shí)指針,并置空

void QueuePop(Queue* pq)
{
	assert(pq);
	assert(pq->phead);
	QNode* del = pq->phead;
	pq->phead = pq->phead->next;
	free(del);
	del = NULL;
	if (pq->phead == NULL)
		pq->ptail = NULL;

	pq->size--;
}
2.5、獲取隊(duì)列頭部元素

斷言,然后直接返回隊(duì)頭指針指向的節(jié)點(diǎn)元素

//獲取隊(duì)列頭部元素
QDataType QueueFront(Queue* pq)
{
	assert(pq);
	assert(pq->phead);
	return pq->phead->val;
}
2.6、獲取隊(duì)列尾部元素

也是一樣的,直接返回隊(duì)尾指針指向的節(jié)點(diǎn)元素

//獲取隊(duì)列尾部元素
QDataType QueueBack(Queue* pq)
{
	assert(pq);
	assert(pq->phead);
	return pq->ptail->val;
}
2.7、判空

檢測隊(duì)列是否為空,如果為空返回非零結(jié)果,如果非空返回0


bool QueueEmpty(Queue* pq)
{
	assert(pq);
	return pq->phead == NULL;
}
2.8、獲取有效元素個(gè)數(shù)
//獲取隊(duì)列中有效元素個(gè)數(shù)
int QueueSize(Queue* pq)
{
	assert(pq);
	return pq->size;
}

完整代碼

Queue.h

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>

//鏈?zhǔn)浇Y(jié)構(gòu) 表示隊(duì)列
typedef int QDataType;
typedef struct QueueNode
{
	struct QueueNode* next;
	QDataType val;                                                                          
}QNode;
//隊(duì)列的結(jié)構(gòu)
typedef struct Queue
{
	QNode* phead;
	QNode* ptail;
	int size;
}Queue;
//初始化
void QueueInit(Queue* pq);
//銷毀隊(duì)列
void QueueDeatroy(Queue* pq);
//隊(duì)尾入列
void QueuePush(Queue* pq, QDataType x);
//隊(duì)頭出列
void QueuePop(Queue* pq);
//獲取隊(duì)列頭部元素
QDataType QueueFront(Queue* pq);
//獲取隊(duì)列尾部元素
QDataType QueueBack(Queue* pq);
//檢測隊(duì)列是否為空,如果為空返回非零結(jié)果,如果非空返回0 
bool QueueEmpty(Queue* pq);
//獲取隊(duì)列中有效元素個(gè)數(shù)
int QueueSize(Queue* pq);

Queue.c

#include"Queue.h"

//初始化
void QueueInit(Queue* pq)
{
	assert(pq);
	pq->phead = NULL;
	pq->ptail = NULL;
	pq->size = 0;
}
//銷毀隊(duì)列
void QueueDeatroy(Queue* pq)
{
	assert(pq);
	QNode* cur = pq->phead;
	while (cur)
	{
		QNode* next = cur->next;
		free(cur);
		cur = next;
	}
	pq->phead = NULL;
	pq->ptail = NULL;
	pq->size = 0;
	
}
//隊(duì)尾入列
void QueuePush(Queue* pq, QDataType x)
{
	assert(pq);
	QNode* newnode = (QNode*)malloc(sizeof(QNode));
	if (newnode == NULL)
	{
		perror("malloc fail");
		exit(-1);
	}
	newnode->next = NULL;
	newnode->val = x;
	if (pq->ptail == NULL)
	{
		pq->phead = pq->ptail = newnode;
	}
	else
	{
		//現(xiàn)在newnode是新的尾結(jié)點(diǎn)
		pq->ptail->next = newnode;
		pq->ptail = newnode;
	}
	pq->size++;
}
//隊(duì)頭出列
void QueuePop(Queue* pq)
{
	assert(pq);
	assert(pq->phead); 
	//保存當(dāng)前節(jié)點(diǎn)
	QNode* tmp = pq->phead;
	//phead往下走
	pq->phead = pq->phead->next;
	free(tmp);
	tmp = NULL;
	if (pq->phead = NULL)
	{
		pq->ptail = NULL;
	}
	pq->size--;
}
//獲取隊(duì)列頭部元素
QDataType QueueFront(Queue* pq)
{
	assert(pq);

	assert(pq->phead);
	return pq->phead->val;
}
//獲取隊(duì)列尾部元素
QDataType QueueBack(Queue* pq)
{
	assert(pq);
	assert(pq->phead);
	return pq->ptail;
}
//檢測隊(duì)列是否為空,如果為空返回非零結(jié)果,如果非空返回0 
bool QueueEmpty(Queue* pq)
{
	assert(pq);
	return pq->phead == NULL;
}
//獲取隊(duì)列中有效元素個(gè)數(shù)
int QueueSize(Queue* pq)
{
	assert(pq);
	return pq->size;
}

Test.c

#include"Queue.h"

int main()
{
	Queue q;
	QueueInit(&q);
	QueuePush(&q, 1);
	QueuePush(&q, 2);
	QueuePush(&q, 3);
	while (!QueueEmpty(&q))
	{
		printf("%d ", QueueFront(&q));
		QueuePop(&q);
	}

	QueueDeatroy(&q);
	return 0;

}

【數(shù)據(jù)結(jié)構(gòu)】棧和隊(duì)列超詳解!(Stack && Queue),數(shù)據(jù)結(jié)構(gòu)文章來源地址http://www.zghlxwxcb.cn/news/detail-758215.html

到了這里,關(guān)于【數(shù)據(jù)結(jié)構(gòu)】棧和隊(duì)列超詳解!(Stack && Queue)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(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)學(xué)習(xí)分享之棧和隊(duì)列詳解

    數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)分享之棧和隊(duì)列詳解

    ??博主CSDN主頁:杭電碼農(nóng)-NEO?? ? ?專欄分類:數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)分享? ? ??代碼倉庫:NEO的學(xué)習(xí)日記?? ? ??關(guān)注我??帶你了解更多數(shù)據(jù)結(jié)構(gòu)的知識(shí) ? ???? 這一節(jié)要分享的是一個(gè)全新的結(jié)構(gòu)–棧和隊(duì)列,棧和隊(duì)列總是會(huì)一起出現(xiàn),因?yàn)樗鼈兊拇鎯?chǔ)方式剛好相反,一個(gè)先進(jìn)先出一

    2024年02月03日
    瀏覽(39)
  • Java 數(shù)據(jù)結(jié)構(gòu)之隊(duì)列(Queue)詳解

    Java 數(shù)據(jù)結(jié)構(gòu)之隊(duì)列(Queue)詳解

    目錄 1、在Java中有哪些常見的隊(duì)列? 2、Queue 接口分析 3、Deque 接口分析 4、PriorityQueue 的實(shí)現(xiàn)原理詳解 5、使用Java數(shù)組實(shí)現(xiàn)隊(duì)列的簡單示例 1、在Java中有哪些常見的隊(duì)列? ????????在Java中,有一些常見的隊(duì)列實(shí)現(xiàn)。下面是其中一些的列舉: //隊(duì)列也是一種線性的數(shù)據(jù)結(jié)構(gòu)

    2024年02月15日
    瀏覽(23)
  • 【數(shù)據(jù)結(jié)構(gòu)】--- 幾分鐘走進(jìn)棧和隊(duì)列(詳解-上)

    【數(shù)據(jù)結(jié)構(gòu)】--- 幾分鐘走進(jìn)棧和隊(duì)列(詳解-上)

    ?? 個(gè)人主頁 :@小沈熬夜禿頭中???? ?? 小編介紹 :歡迎來到我的亂七八糟小星球?? ?? 專欄 :數(shù)據(jù)結(jié)構(gòu) ?? 本章內(nèi)容 :[數(shù)據(jù)結(jié)構(gòu)]—棧和隊(duì)列 送給各位 ??:一事無成也代表萬事皆有可能 歡迎 評(píng)論?? +點(diǎn)贊?? +收藏?? +關(guān)注??哦~ 提示:以下是本篇文章正文內(nèi)容,

    2024年02月06日
    瀏覽(20)
  • 【C++】——棧和隊(duì)列(stack、queue)及優(yōu)先隊(duì)列(priority_queue)的介紹和模擬實(shí)現(xiàn)

    【C++】——棧和隊(duì)列(stack、queue)及優(yōu)先隊(duì)列(priority_queue)的介紹和模擬實(shí)現(xiàn)

    今天我們來學(xué)習(xí)C++stl六大組件的其中一種,容器適配器,stack、queue及priority_queue都是容器適配器。我們循序漸進(jìn),接下來讓我們先認(rèn)識(shí)一下什么是容器適配器。 適配器是一種設(shè)計(jì)模式(設(shè)計(jì)模式是一套被反復(fù)使用的、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)),該

    2024年02月08日
    瀏覽(25)
  • 【C++】棧和隊(duì)列(stack and queue)語法使用及實(shí)現(xiàn)原理

    【C++】棧和隊(duì)列(stack and queue)語法使用及實(shí)現(xiàn)原理

    ?? ? 本篇文章會(huì)對(duì)C++中的容器stack和queue用法進(jìn)行詳解,也包含對(duì)優(yōu)先隊(duì)列(priority_queue)的講解。同時(shí)會(huì)模擬實(shí)現(xiàn)stack、queue和priority_queue底層。希望本篇文章會(huì)對(duì)你有所幫助! 目錄 一、stack 棧 1、1 什么是適配器 1、2 stack 語法講解 1、3 stack 底層實(shí)現(xiàn) 1、4 deque 雙端隊(duì)列簡單

    2024年02月15日
    瀏覽(24)
  • 【C++初階10-stack&queue】STL中的棧和隊(duì)列(附優(yōu)先級(jí)隊(duì)列

    本期分享:STL中的棧和隊(duì)列。 在數(shù)據(jù)結(jié)構(gòu)初階時(shí),我們已經(jīng)學(xué)習(xí)這來那個(gè)兩種數(shù)據(jù)結(jié)構(gòu),如今來看STL中的,不過是更加標(biāo)準(zhǔn)化。而實(shí)現(xiàn)起來,會(huì)簡單得超乎你想象! 文中不足錯(cuò)漏之處望請(qǐng)斧正! STL中的棧和隊(duì)列是容器適配器。容器適配器是對(duì)某種已有容器的再次封裝。 比如

    2024年02月06日
    瀏覽(19)
  • C++ 棧和隊(duì)列(stack and queue)語法使用及底層實(shí)現(xiàn)原理

    C++ 棧和隊(duì)列(stack and queue)語法使用及底層實(shí)現(xiàn)原理

    ?? ? 本篇文章會(huì)對(duì)C++中的容器stack和queue用法進(jìn)行詳解,也包含對(duì)優(yōu)先隊(duì)列(priority_queue)的講解。同時(shí)會(huì)模擬實(shí)現(xiàn)stack、queue和priority_queue底層。希望本篇文章會(huì)對(duì)你有所幫助! 目錄 一、stack 棧 1、1 什么是適配器 1、2 stack 語法講解 1、3 stack 底層實(shí)現(xiàn) 1、4 deque 雙端隊(duì)列簡單

    2024年02月13日
    瀏覽(26)
  • 【LeetCode】設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu) | List、Stack、Queue、DLinkedList

    設(shè)計(jì)鏈表(中等) 707. 設(shè)計(jì)鏈表 冗余版 代碼復(fù)用簡化版 用棧實(shí)現(xiàn)隊(duì)列(簡單) 232. 用棧實(shí)現(xiàn)隊(duì)列 用隊(duì)列實(shí)現(xiàn)棧(簡單) 225. 用隊(duì)列實(shí)現(xiàn)棧 方法一:雙隊(duì)列實(shí)現(xiàn) 方法二:單隊(duì)列實(shí)現(xiàn) 設(shè)計(jì)循環(huán)隊(duì)列(中等) 622. 設(shè)計(jì)循環(huán)隊(duì)列 使用數(shù)組實(shí)現(xiàn) 使用鏈表實(shí)現(xiàn) 設(shè)計(jì)循環(huán)雙端隊(duì)列(中

    2024年02月14日
    瀏覽(24)
  • 【數(shù)據(jù)結(jié)構(gòu)】棧和隊(duì)列(隊(duì)列篇)

    【數(shù)據(jù)結(jié)構(gòu)】棧和隊(duì)列(隊(duì)列篇)

    上期我們已經(jīng)學(xué)習(xí)了數(shù)據(jù)結(jié)構(gòu)中的棧,這期我們開始學(xué)習(xí)隊(duì)列。 目錄 1.隊(duì)列的概念及結(jié)構(gòu) 2.隊(duì)列的實(shí)現(xiàn) 隊(duì)列結(jié)構(gòu)體定義 常用接口函數(shù) 初始化隊(duì)列 隊(duì)尾入隊(duì)列 隊(duì)頭出隊(duì)列 獲取隊(duì)列頭部元素、 獲取隊(duì)列隊(duì)尾元素 獲取隊(duì)列中有效元素個(gè)數(shù) 檢測隊(duì)列是否為空 銷毀隊(duì)列 3.循環(huán)隊(duì)

    2024年02月13日
    瀏覽(24)
  • 數(shù)據(jù)結(jié)構(gòu) | 棧和隊(duì)列

    數(shù)據(jù)結(jié)構(gòu) | 棧和隊(duì)列

    … ??????本文已收錄至:數(shù)據(jù)結(jié)構(gòu) | C語言 更多知識(shí)盡在此專欄中! 棧(Stack) 又名堆棧,它是一種運(yùn)算受限的線性表,限定僅在表尾進(jìn)行插入和刪除操作的線性表。 隊(duì)列(Queue) 也是一種特殊的線性表,特殊之處在于它只允許在表的前端(Front)進(jìn)行刪除操作,而在表的

    2024年01月23日
    瀏覽(23)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包