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

數(shù)據(jù)結(jié)構(gòu)——隊(duì)列的實(shí)現(xiàn)

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

數(shù)據(jù)結(jié)構(gòu)——隊(duì)列的實(shí)現(xiàn)

隊(duì)列,又稱為佇列(queue),計(jì)算機(jī)科學(xué)中的一種抽象資料類型,是先進(jìn)先出(FIFO, First-In-First-Out)的線性表。在具體應(yīng)用中通常用鏈表或者數(shù)組來(lái)實(shí)現(xiàn)。隊(duì)列只允許在后端(稱為rear)進(jìn)行插入操作,在前端(稱為front)進(jìn)行刪除操作。
數(shù)據(jù)結(jié)構(gòu)——隊(duì)列的實(shí)現(xiàn)

typedef int QDataType;
typedef struct QueueNode
{
	struct QueueNode* next;
	QDataType data;
}QNode;

這段代碼使用 typedef 關(guān)鍵字定義了一個(gè)名為 QueueNode 的結(jié)構(gòu)體。QueueNode 結(jié)構(gòu)體包含兩個(gè)成員:

一個(gè)指向另一個(gè) QueueNode 結(jié)構(gòu)體的指針,名為 next,用于表示隊(duì)列中的下一個(gè)節(jié)點(diǎn)。
一個(gè)名為 data 的變量,其數(shù)據(jù)類型為 QDataType,用于表示節(jié)點(diǎn)中存儲(chǔ)的數(shù)據(jù)。
QNode 被定義為 struct QueueNode* 的別名,也就是說(shuō),QNode 是一個(gè)指向 QueueNode 結(jié)構(gòu)體的指針。

總的來(lái)說(shuō),這段代碼定義了一個(gè)鏈表節(jié)點(diǎn)結(jié)構(gòu)體,可以用來(lái)實(shí)現(xiàn)隊(duì)列數(shù)據(jù)結(jié)構(gòu),其中每個(gè)節(jié)點(diǎn)包含一個(gè)數(shù)據(jù)元素和一個(gè)指向隊(duì)列中下一個(gè)節(jié)點(diǎn)的指針。

typedef struct Queue
{
	QNode* head;
	QNode* tail;
	int size;
}Queue;

這段代碼使用 typedef 關(guān)鍵字定義了一個(gè)名為 Queue 的結(jié)構(gòu)體。Queue 結(jié)構(gòu)體包含三個(gè)成員變量:

一個(gè)指向 QNode 結(jié)構(gòu)體的指針,名為 head,用于表示隊(duì)列中的第一個(gè)節(jié)點(diǎn)。
一個(gè)指向 QNode 結(jié)構(gòu)體的指針,名為 tail,用于表示隊(duì)列中的最后一個(gè)節(jié)點(diǎn)。
一個(gè)整型變量,名為 size,用于表示隊(duì)列中節(jié)點(diǎn)的數(shù)量。
這個(gè)結(jié)構(gòu)體可以用來(lái)實(shí)現(xiàn)一個(gè)隊(duì)列數(shù)據(jù)結(jié)構(gòu),其中 head 指向隊(duì)列的開頭,tail 指向隊(duì)列的結(jié)尾,size 記錄隊(duì)列中節(jié)點(diǎn)的數(shù)量。通常情況下,向隊(duì)列中添加一個(gè)節(jié)點(diǎn)會(huì)使 tail 指針指向新的節(jié)點(diǎn),從隊(duì)列中移除一個(gè)節(jié)點(diǎn)會(huì)使 head 指針指向下一個(gè)節(jié)點(diǎn),并更新 size 的值。

//初始化隊(duì)列
void QueueInit(Queue* q)
{
	assert(q);
	q->head = q->tail = NULL;
	q->size = 0;
}

這段代碼定義了一個(gè)名為 QueueInit 的函數(shù),用于初始化一個(gè)隊(duì)列。函數(shù)中傳入一個(gè)指向 Queue 結(jié)構(gòu)體的指針 q,并使用 assert 宏斷言 q 不為 NULL。

函數(shù)的實(shí)現(xiàn)非常簡(jiǎn)單,將 q 的 head 和 tail 成員都賦值為 NULL,將 size 成員賦值為 0,這樣就完成了隊(duì)列的初始化操作。由于 q 是一個(gè)指針,函數(shù)中對(duì)其進(jìn)行的操作實(shí)際上是對(duì)傳入的隊(duì)列進(jìn)行修改,因此不需要返回值。

// 隊(duì)尾入隊(duì)列
void QueuePush(Queue* q, QDataType data)
{
	QNode* newnode = (QNode*)malloc(sizeof(QNode));
	if (newnode == NULL)
	{
		perror("malloc fail");
		return;
	}
	newnode->data = data;
	newnode->next = NULL;

	if (q->head == NULL)
	{
		assert(q->tail == NULL);
		q->head = q->tail = newnode;
	}
	else
	{
		q->tail->next = newnode;
		q->tail = newnode;
	}
	q->size++;

這段代碼定義了一個(gè)名為 QueuePush 的函數(shù),用于將一個(gè)元素插入到隊(duì)列的尾部。函數(shù)中傳入一個(gè)指向 Queue 結(jié)構(gòu)體的指針 q,以及要插入的數(shù)據(jù) data。

函數(shù)的實(shí)現(xiàn)分為以下幾步:

使用 malloc 函數(shù)動(dòng)態(tài)分配一個(gè) QNode 結(jié)構(gòu)體大小的內(nèi)存空間,并將其強(qiáng)制轉(zhuǎn)換為指向 QNode 結(jié)構(gòu)體的指針 newnode。
檢查 newnode 是否為空,如果為空則輸出錯(cuò)誤信息并返回。
將 newnode 的 data 成員賦值為傳入的 data,將 newnode 的 next 成員賦值為 NULL,表示 newnode 是隊(duì)列中的最后一個(gè)節(jié)點(diǎn)。
檢查隊(duì)列是否為空。如果隊(duì)列為空,則將隊(duì)列的 head 和 tail 成員都指向 newnode,表示 newnode 是隊(duì)列中唯一的節(jié)點(diǎn)。
如果隊(duì)列不為空,則將隊(duì)列的 tail 節(jié)點(diǎn)的 next 指針指向 newnode,表示將 newnode 插入到隊(duì)列的尾部,并將 tail 指針指向 newnode,表示 newnode 現(xiàn)在是隊(duì)列中的最后一個(gè)節(jié)點(diǎn)。
將隊(duì)列的 size 成員加1,表示隊(duì)列中節(jié)點(diǎn)的數(shù)量增加了1。
由于隊(duì)列是由指針鏈表實(shí)現(xiàn)的,因此在插入節(jié)點(diǎn)時(shí)需要進(jìn)行動(dòng)態(tài)內(nèi)存分配,并將相鄰節(jié)點(diǎn)的指針進(jìn)行修改。

// 隊(duì)頭出隊(duì)列
void QueuePop(Queue* q)
{
	assert(q);
	assert(q->head != NULL);
	QNode* next = q->head->next;
	free(q->head);
	q->head = next;
	if (q->head == NULL)
		q->tail = NULL;
	q->size--;
}

這段代碼定義了一個(gè)名為 QueuePop 的函數(shù),用于將隊(duì)列頭部的元素彈出隊(duì)列。函數(shù)中傳入一個(gè)指向 Queue 結(jié)構(gòu)體的指針 q。

函數(shù)的實(shí)現(xiàn)分為以下幾步:

使用 assert 宏檢查傳入的 q 不為空,以及隊(duì)列的 head 成員不為 NULL。如果檢查失敗,則直接返回。
將隊(duì)列的 head 節(jié)點(diǎn)的 next 指針賦值給 next,表示隊(duì)列頭部的下一個(gè)節(jié)點(diǎn)。
釋放隊(duì)列的 head 節(jié)點(diǎn)所占用的內(nèi)存空間。
將隊(duì)列的 head 指針指向 next,表示將隊(duì)列頭部的節(jié)點(diǎn)彈出隊(duì)列。
如果隊(duì)列的 head 成員為 NULL,則將隊(duì)列的 tail 成員也賦值為 NULL,表示隊(duì)列已經(jīng)為空。
將隊(duì)列的 size 成員減1,表示隊(duì)列中節(jié)點(diǎn)的數(shù)量減少了1。
由于隊(duì)列是由指針鏈表實(shí)現(xiàn)的,因此在彈出節(jié)點(diǎn)時(shí)需要釋放節(jié)點(diǎn)的內(nèi)存空間,并將相鄰節(jié)點(diǎn)的指針進(jìn)行修改。

// 獲取隊(duì)列頭部元素
QDataType QueueFront(Queue* q)
{
	assert(q);
	assert(!QueueEmpty(q));
	return q->head->data;
}

這段代碼定義了一個(gè)名為 QueueFront 的函數(shù),用于獲取隊(duì)列頭部的元素。函數(shù)中傳入一個(gè)指向 Queue 結(jié)構(gòu)體的指針 q。

函數(shù)的實(shí)現(xiàn)分為以下幾步:

使用 assert 宏檢查傳入的 q 不為空,以及隊(duì)列不為空。如果檢查失敗,則直接返回。
返回隊(duì)列的 head 節(jié)點(diǎn)的 data 成員,即隊(duì)列頭部的元素。
由于隊(duì)列是由指針鏈表實(shí)現(xiàn)的,因此可以通過(guò)訪問(wèn)隊(duì)列頭部節(jié)點(diǎn)的 data 成員來(lái)獲取隊(duì)列頭部的元素。

// 獲取隊(duì)列隊(duì)尾元素
QDataType QueueBack(Queue* q)
{
	assert(q);
	assert(!QueueEmpty(q));
	return q->tail->data;
}

這段代碼定義了一個(gè)名為 QueueBack 的函數(shù),用于獲取隊(duì)列尾部的元素。函數(shù)中傳入一個(gè)指向 Queue 結(jié)構(gòu)體的指針 q。

函數(shù)的實(shí)現(xiàn)分為以下幾步:

使用 assert 宏檢查傳入的 q 不為空,以及隊(duì)列不為空。如果檢查失敗,則直接返回。
返回隊(duì)列的 tail 節(jié)點(diǎn)的 data 成員,即隊(duì)列尾部的元素。
由于隊(duì)列是由指針鏈表實(shí)現(xiàn)的,因此可以通過(guò)訪問(wèn)隊(duì)列尾部節(jié)點(diǎn)的 data 成員來(lái)獲取隊(duì)列尾部的元素。

// 獲取隊(duì)列中有效元素個(gè)數(shù)
int QueueSize(Queue* q)
{
	assert(q);
	return q->size;
}

這段代碼定義了一個(gè)名為 QueueSize 的函數(shù),用于獲取隊(duì)列中有效元素的數(shù)量。函數(shù)中傳入一個(gè)指向 Queue 結(jié)構(gòu)體的指針 q。

函數(shù)的實(shí)現(xiàn)非常簡(jiǎn)單,直接返回隊(duì)列的 size 成員,即隊(duì)列中有效元素的數(shù)量。由于 size 成員是在隊(duì)列的操作過(guò)程中動(dòng)態(tài)更新的,因此可以通過(guò)該成員來(lái)獲取隊(duì)列中有效元素的數(shù)量。

// 檢測(cè)隊(duì)列是否為空,如果為空返回非零結(jié)果,如果非空返回0
bool QueueEmpty(Queue* q)
{
	assert(q);
	return q->size == 0;
}

這段代碼定義了一個(gè)名為 QueueEmpty 的函數(shù),用于判斷隊(duì)列是否為空。函數(shù)中傳入一個(gè)指向 Queue 結(jié)構(gòu)體的指針 q。

函數(shù)的實(shí)現(xiàn)非常簡(jiǎn)單,通過(guò)檢查隊(duì)列的 size 成員是否為0來(lái)判斷隊(duì)列是否為空。如果 size 等于0,則隊(duì)列為空,返回 true(非零結(jié)果),否則隊(duì)列非空,返回 false(0)。

// 銷毀隊(duì)列
void QueueDestroy(Queue* q)
{
	assert(q);
	QNode* cur = q->head;
	while (cur)
	{
		QNode* next = cur->next;
		free(cur);
		cur = next;
	}
	q->head = q->tail = NULL;
	q->size = 0;
}

這段代碼定義了一個(gè)名為 QueueDestroy 的函數(shù),用于銷毀一個(gè)隊(duì)列。函數(shù)中傳入一個(gè)指向 Queue 結(jié)構(gòu)體的指針 q。

函數(shù)的實(shí)現(xiàn)分為以下幾步:

使用 assert 宏檢查傳入的 q 不為空。
將隊(duì)列的 head 指針賦值給 cur,表示從隊(duì)列的頭部開始銷毀節(jié)點(diǎn)。
循環(huán)遍歷隊(duì)列中的所有節(jié)點(diǎn),每次將 cur 的 next 指針賦值給 next,然后釋放 cur 指向的節(jié)點(diǎn)所占用的內(nèi)存空間。
將 cur 指針指向 next,即將指針移動(dòng)到下一個(gè)節(jié)點(diǎn),繼續(xù)進(jìn)行循環(huán)直到遍歷完所有節(jié)點(diǎn)。
將隊(duì)列的 head 和 tail 成員都賦值為 NULL,將隊(duì)列的 size 成員賦值為 0,表示隊(duì)列已經(jīng)被銷毀。
由于隊(duì)列是由指針鏈表實(shí)現(xiàn)的,因此在銷毀隊(duì)列時(shí)需要釋放每個(gè)節(jié)點(diǎn)所占用的內(nèi)存空間,并將指針移動(dòng)到下一個(gè)節(jié)點(diǎn)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-498267.html

#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
#include<assert.h>
typedef int QDataType;
typedef struct QueueNode
{
	struct QueueNode* next;
	QDataType data;
}QNode;
typedef struct Queue
{
	QNode* head;
	QNode* tail;
	int size;
}Queue;

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

//初始化隊(duì)列
void QueueInit(Queue* q)
{
	assert(q);
	q->head = q->tail = NULL;
	q->size = 0;
}
// 隊(duì)尾入隊(duì)列
void QueuePush(Queue* q, QDataType data)
{
	QNode* newnode = (QNode*)malloc(sizeof(QNode));
	if (newnode == NULL)
	{
		perror("malloc fail");
		return;
	}
	newnode->data = data;
	newnode->next = NULL;

	if (q->head == NULL)
	{
		assert(q->tail == NULL);
		q->head = q->tail = newnode;
	}
	else
	{
		q->tail->next = newnode;
		q->tail = newnode;
	}
	q->size++;

}
// 隊(duì)頭出隊(duì)列
void QueuePop(Queue* q)
{
	assert(q);
	assert(q->head != NULL);
	QNode* next = q->head->next;
	free(q->head);
	q->head = next;
	if (q->head == NULL)
		q->tail = NULL;
	q->size--;
}
// 獲取隊(duì)列頭部元素
QDataType QueueFront(Queue* q)
{
	assert(q);
	assert(!QueueEmpty(q));
	return q->head->data;
}
// 獲取隊(duì)列隊(duì)尾元素
QDataType QueueBack(Queue* q)
{
	assert(q);
	assert(!QueueEmpty(q));
	return q->tail->data;
}
// 獲取隊(duì)列中有效元素個(gè)數(shù)
int QueueSize(Queue* q)
{
	assert(q);
	return q->size;
}
// 檢測(cè)隊(duì)列是否為空,如果為空返回非零結(jié)果,如果非空返回0
bool QueueEmpty(Queue* q)
{
	assert(q);
	return q->size == 0;
}
// 銷毀隊(duì)列
void QueueDestroy(Queue* q)
{
	assert(q);
	QNode* cur = q->head;
	while (cur)
	{
		QNode* next = cur->next;
		free(cur);
		cur = next;
	}
	q->head = q->tail = NULL;
	q->size = 0;
}
int main()
{
	Queue q;
	QueueInit(&q);
	QueuePush(&q, 1);
	QueuePush(&q, 2);
	QueuePush(&q, 3);
	QueuePush(&q, 4);
	QueuePush(&q, 5);
	while (!QueueEmpty(&q))
	{
		printf("%d ", QueueFront(&q));
		QueuePop(&q);
	}
	printf("\n");
	
	QueueDestroy(&q);
	return 0;
}
	

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

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(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):隊(duì)列Queue詳解

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

    隊(duì)列 :只允許在一端進(jìn)行插入數(shù)據(jù)操作,在另一端進(jìn)行刪除數(shù)據(jù)操作的特殊線性表。進(jìn)行插入操作的一端稱為 隊(duì)尾 ,刪除操作的一端稱 隊(duì)頭 。 入隊(duì)列 :進(jìn)行插入操作的一端稱為 隊(duì)尾 。 出隊(duì)列 :進(jìn)行刪除操作的一端稱為 隊(duì)頭 。 在 Java 中, Queue是個(gè)接口,底層是通過(guò)鏈表

    2024年02月11日
    瀏覽(25)
  • [數(shù)據(jù)結(jié)構(gòu) -- C語(yǔ)言] 隊(duì)列(Queue)

    [數(shù)據(jù)結(jié)構(gòu) -- C語(yǔ)言] 隊(duì)列(Queue)

    目錄 1、隊(duì)列 1.1 隊(duì)列的概念及結(jié)構(gòu) 2、隊(duì)列的實(shí)現(xiàn) 2.1 接口 3、接口的實(shí)現(xiàn) 3.1 初始化隊(duì)列 3.2 隊(duì)尾入隊(duì)列 分析: 3.3 隊(duì)頭出隊(duì)列 分析: 3.4 獲取隊(duì)列頭部元素 3.5 獲取隊(duì)列尾部元素 3.6 獲取隊(duì)列中有效元素個(gè)數(shù) 3.7 檢測(cè)隊(duì)列是否為空 3.7.1 int 類型判空 3.7.2 bool 類型判空 3.8 銷毀隊(duì)

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

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

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

    2024年02月15日
    瀏覽(23)
  • 隊(duì)列(Queue):先進(jìn)先出(FIFO)的數(shù)據(jù)結(jié)構(gòu)

    隊(duì)列(Queue):先進(jìn)先出(FIFO)的數(shù)據(jù)結(jié)構(gòu)

    隊(duì)列是一種基本的數(shù)據(jù)結(jié)構(gòu),用于在計(jì)算機(jī)科學(xué)和編程中管理數(shù)據(jù)的存儲(chǔ)和訪問(wèn)。隊(duì)列遵循先進(jìn)先出(First In, First Out,F(xiàn)IFO)原則,即最早入隊(duì)的元素首先出隊(duì)。這種數(shù)據(jù)結(jié)構(gòu)模擬了物理世界中的隊(duì)列,如排隊(duì)等待服務(wù)的人。 在本篇博客中,我們將詳細(xì)介紹隊(duì)列的概念、用途

    2024年02月05日
    瀏覽(20)
  • 【數(shù)據(jù)結(jié)構(gòu)】棧和隊(duì)列超詳解!(Stack && Queue)

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

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

    2024年02月04日
    瀏覽(30)
  • Java 【數(shù)據(jù)結(jié)構(gòu)】 棧(Stack)和隊(duì)列(Queue)【神裝】

    Java 【數(shù)據(jù)結(jié)構(gòu)】 棧(Stack)和隊(duì)列(Queue)【神裝】

    ? 登神長(zhǎng)階 ?第三神裝 S tack ? ?第四神裝?Queue ?? 目錄 ??一.棧 Stack ??1.概念 ???2.基本操作? ???3.相關(guān)OJ題?? ???4.棧、虛擬機(jī)棧和棧幀的區(qū)別 ??二.隊(duì)列 Queue ???1.概念 ??2.基本操作 ??三.總結(jié)與反思 ????????在 Java 中,棧(Stack)是一種后進(jìn)先出(LIFO)的數(shù)

    2024年04月27日
    瀏覽(26)
  • 數(shù)據(jù)結(jié)構(gòu)入門到入土——棧(Stack)和隊(duì)列(Queue)

    數(shù)據(jù)結(jié)構(gòu)入門到入土——棧(Stack)和隊(duì)列(Queue)

    目錄 一,棧(Stack) 1.1 概念 1.2 棧的使用 1.3 棧的模擬實(shí)現(xiàn) 1.4 棧的應(yīng)用場(chǎng)景 1.5 棧,虛擬機(jī)棧,棧幀有什么區(qū)別? 二,隊(duì)列(Queue) 2.1 概念 2.2 隊(duì)列的使用 ?2.3 隊(duì)列模擬實(shí)現(xiàn) 2.4 循環(huán)隊(duì)列 三,雙端隊(duì)列 棧 :一種特殊的線性表,其 只允許在固定的一端進(jìn)行插入和刪除元素操

    2024年02月02日
    瀏覽(21)
  • 【數(shù)據(jù)結(jié)構(gòu)與算法】C++的STL模板(迭代器iterator、容器vector、隊(duì)列queue、集合set、映射map)以及算法例題

    【數(shù)據(jù)結(jié)構(gòu)與算法】C++的STL模板(迭代器iterator、容器vector、隊(duì)列queue、集合set、映射map)以及算法例題

    更多算法例題鏈接: 【數(shù)據(jù)結(jié)構(gòu)與算法】遞推法和遞歸法解題(遞歸遞推算法典型例題) 什么是迭代器(iterator) 迭代器(iterator)的定義: 迭代器是一種檢查容器內(nèi)元素并遍歷元素的數(shù)據(jù)類型。 迭代器提供對(duì)一個(gè)容器中的對(duì)象的訪問(wèn)方法,并且定義了容器中對(duì)象的范圍。 容器

    2024年04月14日
    瀏覽(30)
  • 數(shù)據(jù)結(jié)構(gòu)之Queue的實(shí)現(xiàn)

    方法名 參數(shù) 功能 返回 Size void 返回鏈表規(guī)模(該方法由List T派生而來(lái)) empty void 返回鏈表是否為空(該方法由List T派生而來(lái)) front void 返回隊(duì)首數(shù)據(jù)域的引用 enqueue T const e 入隊(duì) void dequeue void 出隊(duì) 出隊(duì)的對(duì)象

    2024年02月15日
    瀏覽(18)
  • 【數(shù)據(jù)結(jié)構(gòu)】隊(duì)列及其實(shí)現(xiàn)

    【數(shù)據(jù)結(jié)構(gòu)】隊(duì)列及其實(shí)現(xiàn)

    目錄 ??前言 認(rèn)識(shí)隊(duì)列 隊(duì)列的初始化 隊(duì)列判空 數(shù)據(jù)隊(duì)尾入隊(duì) 數(shù)據(jù)隊(duì)頭出隊(duì) 取隊(duì)頭數(shù)據(jù) 取隊(duì)尾數(shù)據(jù) 隊(duì)列數(shù)據(jù)的個(gè)數(shù) 隊(duì)列銷毀 總結(jié) 上次我們學(xué)習(xí)了棧及其實(shí)現(xiàn),當(dāng)然也少不它的好兄弟隊(duì)列啦,今天我們開始隊(duì)列的學(xué)習(xí) 隊(duì)列的性質(zhì)是 先進(jìn)先出 ,就比如車輛進(jìn)出隧道一般,它

    2024年02月09日
    瀏覽(21)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包