日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

利用队列实现车厢编组

發布時間:2024/9/30 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用队列实现车厢编组 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

利用隊列實現車廂編組問題。假設隊列元素是char類型,‘H’表示硬座,‘S’表示軟臥,隊列A表示一組硬座和臥鋪混編的車廂。要求把隊列A中的硬座車廂移動到隊列B,隊列A中的臥鋪車廂移動到隊列C,同時保留原有硬座車廂之間和軟臥車廂之間的先后順序不變。如HSHHSHSSHH,分別輸出軟臥車組:SSSS和硬座車組:HHHHHH。

#include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR 0 #define OVERFLOW -2 #define TRUE 1 #define FALSE 0 //typedef 為重定義,將一個char類型數據重新定義為ElemType,在以后的程序中出現的ElemType 就可以理解為char類型。 typedef char ElemType; typedef int Status; //----- 隊列的順序存儲表示 ----- #define MAXQSIZE 30 // 存儲空間的初始分配量typedef struct {ElemType *base; //存儲空間的基址int front; //隊頭位標int rear; //隊尾位標, 指示隊尾元素的下一位置int maxSize; //存儲容量 } SqQueue; //別名// 構造一個空隊列 Q Status InitQueue(SqQueue &Q) {//Q->rear指向頭結點Q.base = (ElemType*)malloc(MAXQSIZE * sizeof(ElemType));if(!Q.base) exit(OVERFLOW);Q.front = Q.rear = 0;Q.maxSize = MAXQSIZE;return OK; }//判隊列是否為空 Status QueueEmpty (SqQueue Q) {if(Q.rear == Q.front) return TRUE;else return FALSE ; }//入隊函數 Status EnQueue(SqQueue &Q, ElemType e) { //請在此填寫代碼,將該算法補充完整,參見書本和課件相關章節if((Q.rear+1) % MAXQSIZE == Q.front)//隊列已滿return ERROR;Q.base[Q.rear] = e;//插入隊尾Q.rear = (Q.rear +1) % MAXQSIZE;//尾部指針后移,如果到最后則轉到頭部return OK; }//出隊函數 Status DeQueue(SqQueue &Q, ElemType &e) { //請在此填寫代碼,將該算法補充完整,參見書本和課件相關章節if(Q.front == Q.rear) //隊列空return ERROR;//返回隊頭元素e = Q.base[Q.front]; //隊頭指針后移,如到最后轉到頭部Q.front = (Q.front + 1) % MAXQSIZE; return OK; }//輸出循環隊列函數 void OutQueue(SqQueue Q) { ElemType e;if(QueueEmpty(Q)){printf("這是一個空隊列!");} else {while(QueueEmpty(Q) == FALSE){DeQueue(Q,e);printf("%6c", e);}printf("\n");} }void Arrange(SqQueue A, SqQueue &B, SqQueue &C) {ElemType e;//請在此填寫代碼,將該算法補充完整,參見書本或課件相關章節InitQueue(B);InitQueue(C);while (FALSE == QueueEmpty(A)) {DeQueue(A, e);if(e == 'H') EnQueue(B, e);else EnQueue(C, e);}}//主函數 int main() {SqQueue A, B, C;ElemType e;InitQueue(A);printf("請輸入軟臥S和硬座H的一個組合車組:");for(scanf("%c", &e); e != '\n';) {EnQueue(A, e);scanf("%c", &e);}OutQueue(A);Arrange(A, B, C);printf("硬座車組:");OutQueue(B);printf("軟臥車組:");OutQueue(C); return 0; }

總結

以上是生活随笔為你收集整理的利用队列实现车厢编组的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。