棧:先進後出,lifo;
佇列:先進先出,fifo;隊尾,rare,隊頭,front;
//佇列的抽象資料定義
adt queue
資料關係:r1 = {}
基本操作:初始化,銷毀,清空,判空, 求長度,獲得隊頭, 插入元素,刪除隊頭並返回,呼叫函式;
}adt queue
雙端佇列:端點1 , 端點2
受限的雙端佇列;
佇列的兩種表示:鏈佇列
鏈佇列的表示與實現:
typedef struct qnodeqnode , queue;
typedef struct lelemtype;
typedef lelemtype event;
typedef struct lnodelnode , * linklist;
typedef linklist eventlist;//
void banksimulation(int closetime); //銀行模擬
void openforday(); //開店
void closeforday(); //關店
int getmin(linkqueue q); //得到人最少的視窗
void customerarriving(int closetime); //預計使用者到來
void customerdeparture(int closetime); //使用者離開
/***** 鍊錶操作 ******/
void initlist(linklist *pl);
int listempty(linklist l);
void orderinsert(linklist *pl, lelemtype en);
void delfirst(linklist *pl, lelemtype *e);
/***** 佇列操作 ******/
void initqueue(linkqueue *q);
int delqueue(linkqueue *pq, qelemtype *e);
int enqueue(linkqueue *pq, qelemtype e);
int queuelength(linkqueue q);
int totaltime=0, customernum=0; //累計客戶逗留時間,客戶數
eventlist eventlist; //事件表
event event; //事件
customerqueue windows[windows_num+1]; //視窗,從1開始儲存
customer customer; //客戶記錄
int main()
//銀行模擬
void banksimulation(int closetime)
else
}closeforday(); }
//銀行開門,初始化
void openforday()
//void closeforday()
// **使用者到達事件
void customerarriving(int closetime)
}/******鍊錶操作***************/
// 有頭節點的單鏈表
void initlist(linklist *pl)
int listempty(linklist l)
void delfirst(linklist *pl , lelemtype *e)
第三章 棧與佇列 總結
棧 限定僅在表尾進行插入和刪除操作的線性表 棧的抽象資料型別定義 adt stack data 棧中元素具有相同型別及後進先出特性,相鄰元素具有前驅和後繼關係 operation initstack 前置條件 棧不存在 輸入 無 功能 棧的初始化 輸出 無 後置條件 構造乙個空棧 destroyst...
第三章 棧和佇列
棧和佇列 一 棧 1 棧的定義 棧是限定僅在表尾進行插入和刪除操作的線性表,允許插入和刪除的一端稱為棧頂,另一端稱為棧底,不含任何資料元素的棧稱為空棧。2 在任何時候出棧的元素都只能是棧頂元素,即最後最後入棧者最先出棧。所以棧中元素除了具有線性關係外,還具有後進先出的特性。3 棧的抽象資料型別定義 ...
第三章 棧和佇列
棧和佇列是兩種常用的資料結構,同時又是操作受限的線性表,也是兩種重要的抽象資料型別。1 1棧是限定僅在表尾進行插入和刪除操作的線性表。棧中元素具有線性關係和後進先出的特性。2雖然對插入和刪除操作的位置限制減少了棧的靈活性,但同時也使得棧的操作更有效更容易實現。3棧的儲存結構分兩種,一種是順序儲存結構...