佇列判空 (二)佇列的實現

2021-10-12 21:36:34 字數 2289 閱讀 7292

源於生活,抽象生活。

生活中的佇列:當然是停車場排隊出場啦。

計算機的佇列:簡答的說就是先入先出(fifo)。在大腦中要有的概念是:

隊頭(狀態):就是排隊第乙個交錢準備出場的車;

隊尾(狀態):最後乙個排隊準備交錢的車;

入隊(動作):add. 把車開入「出停車場的道」。

出棧(動作):out.交完錢,把車開出停車場。

fifo 單向佇列

ok。本節只討論先入先出的單向佇列,貌似比棧還簡單哈。話不多說,擼起袖子就寫**吧。先想象架構:

物件:佇列moneyqueue(交錢佇列);元素car(小汽車)動作:入佇列add(開入繳費佇列);出佇列out(開出停車場)輔助動作:判空isempty(繳費佇列上還有沒有車),判滿(繳費佇列還能不能開進去車)
當然,我還是希望能夠用模板類來實現。開始寫**吧。

moneyqueue.h

#ifndef __money_queue_h__

#define __money_queue_h__

#include #include using namespace std;

template class moneyqueue

;template moneyqueue::moneyqueue(int size)

clear();

m_isize = size;

m_pqueue = new t[size];

}template moneyqueue::~moneyqueue()

template bool moneyqueue::clear()

template bool moneyqueue::add(t t)

m_pqueue[++m_ibottom] = t;

return true;

}template bool moneyqueue::out(t &t)

t = m_pqueue[0];

for(int i = 0; i < m_ibottom; i++)

m_ibottom--;

return true;

}template bool moneyqueue::isempty()

template bool moneyqueue::isfull()

template int moneyqueue::size()

templatebool moneyqueue::show()

for (int i = 0; i <= m_ibottom; i++)

cout << endl;

return true;

}#endif // !1

car.h

#ifndef __car_h__

#define __car_h__

#include #include #include using namespace std;

class car

; car(string name, int speed);

~car(){};

private:

string m_sname;

int m_ispeed;

};#endif

car.cpp

#include "car.h"

car::car(string name, int speed)

ostream &operator << (ostream &out, car &car)

queuemain.cpp

#include #include #include "moneyqueue.h"

#include "car.h"

using namespace std;

static void myqueue();

int main()

static void myqueue()

執行結果:

佇列(二) 佇列的鍊錶實現方式

1.佇列的單向鍊錶的實現方法 return只可以返回乙個值,單向迴圈鍊錶來實現佇列的時候可以只保留乙個指標,因為保留rear指標能夠很方便的表示出front指標,所以保留rear指標。另外由於鍊錶的第乙個結點處理比較特殊,所以在初始化的時候需要單獨處理。鍊錶實現的佇列思想也是第乙個單元作為頭結點,不...

佇列(二) 佇列的鍊錶實現方式

1.佇列的單向鍊錶的實現方法 return僅僅能夠返回乙個值,單向迴圈鍊錶來實現佇列的時候能夠僅僅保留乙個指標,由於保留rear指標能夠非常方便的表示出front指標,所以保留rear指標。另外因為鍊錶的第乙個結點處理比較特殊,所以在初始化的時候須要單獨處理。鍊錶實現的佇列思想也是第乙個單元作為頭結...

二 佇列(直線佇列和環形佇列)

佇列是乙個有序列表,可以用陣列或者鍊錶來實現,遵循先入先出的原則。front指向佇列頭的資料前乙個位置,rear指向隊尾元素。利用者兩個變數front及rear分別記錄佇列前後端的下標,front會隨著資料輸出而改變,而rear則是隨著資料輸入而改變。下面利用陣列建立乙個含有三個元素的佇列,及注釋如...