資料結構 棧與佇列

2021-10-20 17:30:27 字數 1869 閱讀 8119

棧是一種後進先出結構,可以根據改變棧狀態和檢測棧狀態的操作來定義棧,包括清空棧,判斷棧是否為空,將元素放入棧頂,彈出棧頂元素,獲取棧頂元素但不刪除該元素。適用於資料儲存後以相反的順序檢索的情況,乙個應用是在程式中匹配分隔符。

棧的鍊錶實現

template<

class

type

>

class

stack

bool isempty()

const

void

clear()

void

push

(const type& info)

type pop()

type&

top(

)private

: list m_list;

};

佇列

佇列是一種先進先出結構,佇列是乙個簡單的排隊序列,在佇列尾部新增元素,在佇列頭部刪除元素,是一種使用兩端的結構。佇列常用於模擬,如排隊論,用佇列建立模型。

佇列的鍊錶實現(雙向鍊錶)

template<

class

type

>

class

queue

bool isempty()

const

void

clear()

void

push

(const type& info)

type pop()

type&

top(

)private

: list m_list;

};

銀行排隊服務示例

int function

(int para)

int main()

;//每分鐘顧客數及所佔百分比,陣列下標為顧客數

//服務時間及所佔百分比,陣列下標為服務時間的十分之一

int services=

;//職員需要服務時間及員工數量資訊

int clerks=

, numofclerks=

sizeof

(clerks)

/sizeof

(int)

; int customers, t, i, x, numofminutes=

100;

double maxwait=

0.0, curwait=

0.0, thereisline=

0.0;

queue simulq;

cout.

precision(2

);for(t=

1;t<=numofminutes;t++

)else

}customers

=function

(arrivals)

;for

(i=0

;i)for

(i=0

;i!simulq.

isempty()

;)else}if

(!simulq.

isempty()

)}} cout<<

"\nfor"

<"clerks, there was a line"

<100<<

"% of the time;\n"

<<

"max wait time was"

<60.0

<<

"min."

return0;

}

資料結構 棧與佇列

題目 1.編寫函式,採用鏈式儲存實現棧的初始化 入棧 出棧操作 2.編寫函式,採用順序儲存實現棧的初始化 入棧 出棧操作 3.編寫函式,採用鏈式儲存實現佇列的初始化 入隊 出隊操作 4.編寫函式,採用順序儲存實現佇列的初始化 入隊 出隊操作 5.編寫乙個主函式,在主函式中設計乙個簡單的選單,分別除錯...

資料結構 棧與佇列

棧的原則是後進先出,即插入與刪除元素均在棧頂進行。獲取棧頂元素 s.top 佇列的原則是先進先出,即插入資料在隊尾進行,刪除資料在隊頭進行。獲取隊頭元素 q.front 思路 用兩個棧,乙個棧用來進隊,乙個棧用來出隊,當資料進入佇列的時候,我們將其壓入乙個棧,當資料出隊的時候,我們將儲存在棧內的資料...

資料結構 棧與佇列

1.順序棧 基本操作 typedef int elemtype 定義 順序棧 typedef struct sqstack 判空 bool stackempty sqstack s 進棧 bool push sqstack s elemtype x 出棧操作 bool pop sqstack s e...