分析題目可知需要最起碼需要對電梯以及乘客建模,電梯只有5層,而在5層電梯中,都有可能存在向下或者向上的乘客在等待,因此需要有等待佇列,每一層都有倆個等待佇列,乙個向上乙個向下。此外,為了滿足對電梯中更加逼逼真的建模,即模擬乘客出電梯的順序是先進後出(一般認為i先進電梯的要站靠內一點,所以比較晚出去)需要採用棧這個資料結構。每一層都有乙個從乘客棧。
話不多說,直接貼**
乘客的結構體定義:
//乘客相關的結構體定義
typedef struct clientnode *client;
等待佇列的結構體定義
typedef client elemtype;
//乘客佇列
typedef struct clientqueuenode * clientqueueptr;
//乘客的等待佇列
typedef struct waitqueuenode waitqueue;
typedef client elemtype;
//乘客棧
typedef struct clientstacknode clientstack;
電梯的結構體定義:
//狀態的定義
enum elevatormove ; //電梯的8種動作
enum elevatorstate; //電梯的狀態
//電梯相關的結構體定義
typedef struct elevatornode *elevator;
其中callcar表示電梯要前往的目標樓層,一般在某層乘客按下電梯後,如果電梯要響應,就會把該層寫進自己的目標樓層中,或者是有乘客要進入電梯,那麼乘客的目標樓層就是該電梯的目標樓層。
clientid陣列記錄當前電梯的乘客編號,用了輸出顯示用,因為我設定乙個電梯最多智慧型容納8個人,所以就設定8位就行。
資料結構之棧的實現
定義 棧是限制插入和刪除只能在乙個位置的上進行的表 叫做後進先出表 該位置是表的末端,叫做棧頂。對棧的基本操作是push 入棧 和pop 出棧 前者是插入元素到棧頂,後者是將棧頂元素刪除 棧的應用 1.平衡符號 編譯器檢查程式的語法錯誤,看看一些符號是否匹配如 是匹配的,而 是不匹配的 2.計算字尾...
資料結構之棧實現
ps 棧用類實現比較好,可以同時管理多種資料結構。不過對於剛剛接觸的我來說,就看著數,按著書上的流程走吧。我會盡力把棧的特點講解清楚,以後有了更深入的了解,我會再來補充的。逆波蘭表示法 是一種將運算子寫在運算元後面的描述程式 算式 的方法。舉個例子,我們平常用中綴表示法描述的算式 1 2 5 4 改...
資料結構之String實現
說到底,string類實際上就是對字串指標進行一系列的操作 兩個重點 1.介面記得寫哪一些 2.c函式的使用 strcpy newstring.m data,m data strcat newstring.m data,other.m data class mystring define crt s...