利用队列实现车厢编组
生活随笔
收集整理的這篇文章主要介紹了
利用队列实现车厢编组
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
利用隊列實現車廂編組問題。假設隊列元素是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; }總結
以上是生活随笔為你收集整理的利用队列实现车厢编组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 队列的应用、栈的应用
- 下一篇: 队列(常用数据结构之一)