經典資料結構系列之 佇列的應用

2022-08-23 16:57:11 字數 1569 閱讀 7981

1、前言

資料結構,是計算機程式設計中對資料儲存最基本的操作,不同的資料結構適用不同的業務場景。如今大部分情況都是呼叫開發api封裝好的類庫,直接呼叫,幾乎不需要程式設計師再去深究其中背後實現的邏輯,大大簡化和減低了對程式設計師的要求。正是這種,知其然而不知其所以然,導致很多程式設計師缺乏對於底層結構的了解,分不清楚不同資料結構之間的效能差異,導致出現很多系統效能問題。

2、原理推導

佇列的應用,佇列是一種特殊的線性表,在佇列尾部一端插入資料或在佇列頭部一端刪除資料,遵循"先進先出"(fifo)原則。

佇列在具體的應用過程中又分為迴圈佇列,雙端佇列,優先順序佇列。這裡以迴圈隊列為例,實現佇列簡單的插入和移除操作。

#說明迴圈佇列,是佇列中如果有移除操作,為了避免佇列儲存有空位,卻不能插入新資料項的問題,讓尾部的指標重新回到陣列開始的位置儲存,這就是迴圈佇列,也稱為緩衝環。

3、**示例

# 迴圈佇列的基本操作

public class basequeue 

/*** 資料迴圈插入佇列

* @param data

*/public void insertqueue(int data)

endindex++;

queuearray[endindex] = data;

sumtotal++;

// 如果佇列計數值大於佇列實際長度,則重置佇列計數值

if (sumtotal > queuearray.length)

}/**

* 移除佇列中的資料

* @return

*/public int removequeue()

//清空佇列當前索引的資料

int data = queuearray[frontindex];

queuearray[frontindex] = 0;

// 如果佇列中已經是最後乙個數,則單獨再執行移除操作

if (frontindex == queuearray.length - 1)

frontindex++; // 每一次移除操作,索引位置往後移位

sumtotal--; // 每一次移除操作,佇列中總數遞減

return data;

}/**

* 檢視當前索引位置資料

* @return

*/public int peekfront()

/*** 列印佇列中的所以資料

*/public void printqueue()

}public static void main(string args)

}

4、禪定時刻

佇列的應用,主要是利用先入先出的特性,解決一些具體業務場景比如多系統之間訊息通知,訂單處理,日誌系統等,涉及到需要非同步處理,應用解耦,流量削鋒和訊息通訊四個場景。

思維的持續,乙個真的有思想,不穿格仔襯衫的程式設計師。

經典資料結構系列之 鍊錶的應用

1 前言 資料結構,是計算機程式設計中對資料儲存最基本的操作,不同的資料結構適用不同的業務場景。如今大部分情況都是呼叫開發api封裝好的類庫,直接呼叫,幾乎不需要程式設計師再去深究其中背後實現的邏輯,大大簡化和減低了對程式設計師的要求。正是這種,知其然而不知其所以然,導致很多程式設計師缺乏對於底層結...

經典的資料結構 佇列

超級經典的資料結構,如下 testconsole.cpp 定義控制台應用程式的入口點。include stdafx.h include include using namespace std struct node struct queue 初始化鏈隊 void initqueue struct q...

資料結構之佇列應用例項

include stdafx.h include include include include typedef struct qnode qnode typedef struct qutype 顯示時間 void gettime 主頁面顯示 void dispwindow 釋放鏈隊 void de...