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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

数据结构实验之栈与队列十一:refresh的停车场

發布時間:2025/3/21 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构实验之栈与队列十一:refresh的停车场 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Description
refresh最近發了一筆橫財,開了一家停車場。由于土地有限,停車場內停車數量有限,但是要求進停車場的車輛過多。當停車場滿時,要進入的車輛會進入便道等待,最先進入便道的車輛會優先

進入停車場,而且停車場的結構要求只出去的車輛必須是停車場中最后進去的車輛。現告訴你停車場容量N以及命令數M,以及一些命令(Add num 表示車牌號為num的車輛要進入停車場或便道,

Del 表示停車場中出去了一輛車,Out 表示便道最前面的車輛不再等待,放棄進入停車場)。假設便道內的車輛不超過1000000.

Input
輸入為多組數據,每組數據首先輸入N和M(0< n,m <200000),接下來輸入M條命令。

Output
輸入結束后,如果出現停車場內無車輛而出現Del或者便道內無車輛而出現Out,則輸出Error,否則輸出停車場內的車輛,最后進入的最先輸出,無車輛不輸出。

Sample
Input
2 6
Add 18353364208
Add 18353365550
Add 18353365558
Add 18353365559
Del
Out
Output
18353365558
18353364208

#include<bits/stdc++.h>using namespace std;#define intsize 10000 #define addsize 10000 typedef long long int selemtype; typedef long long int qelemtype;typedef struct {selemtype *base;selemtype *top;int stacksize; } Sqstack;typedef struct Queue {qelemtype data;struct Queue *next; } Queue, *queueptr;typedef struct {queueptr fron;//隊頭指針queueptr rear;//隊尾指針 } linkqueue;int initstack(Sqstack &s, int n) //建立空棧 {s.base = (selemtype *)malloc(n * sizeof(selemtype));if(!s.base)return -1;s.top = s.base;return 1; }int push(Sqstack &s, selemtype e) {if(s.top - s.base >= s.stacksize){s.base = (selemtype *)realloc(s.base, (s.stacksize + addsize) * sizeof(selemtype));if(!s.base)return -1;s.top = s.base + s.stacksize;s.stacksize += addsize;}*s.top++ = e;return 1; } int pop(Sqstack &s, selemtype &e) {if(s.base == s.top)return 0;e = *--s.top;return 1; } int isempty(Sqstack s)//這里注意一下不能寫成Sqstack &s {if(s.base == s.top)return 1;elsereturn 0; }int initqueue(linkqueue &q) {q.fron = q.rear = new Queue;if(!q.fron)return -1;q.fron->next = NULL;return 1; } int enqueue(linkqueue &q, qelemtype e) {queueptr p = new Queue;if(!p)return -1;p->data = e;p->next = NULL;q.rear->next = p;q.rear = p;return 1; } int dequeue(linkqueue &q, qelemtype &e) {if(q.fron == q.rear)return 0;queueptr p = q.fron->next;e = p->data;q.fron->next = p->next;if(q.rear == p)//如果是最后一個元素被刪除,隊尾指針也丟失q.rear = q.fron;free(p);return 1; } int qempty(linkqueue q) {if(q.rear == q.fron)return 1;elsereturn 0; } int main() {int m, n;//n是棧的容量while(~scanf("%d%d", &n, &m)){Sqstack s;initstack(s, n);//n是棧的容量,棧的容量是固定的linkqueue q;initqueue(q);int flag = 0;selemtype e;char c[10];long long int num;while(m--){scanf("%s", c);//空格就是結束此字符串的輸入if(strcmp(c, "Add") == 0){scanf("%lld" ,&num);if(s.top - s.base < n)//有剩余車位,判斷棧滿。n為棧的容量{push(s, num);}else{enqueue(q, num);}} else if(strcmp(c, "Del") == 0){if(isempty(s)){flag = 1;}else{pop(s, e);if(!qempty(q)){qelemtype temp;dequeue(q, temp);push(s, temp);}}} else if(strcmp(c, "Out") == 0){if(qempty(q)){flag = 1;}qelemtype temp;dequeue(q, temp);}}if(flag)printf("Error\n");else{while(!isempty(s)){pop(s, e);printf("%lld\n", e);}}} }

總結

以上是生活随笔為你收集整理的数据结构实验之栈与队列十一:refresh的停车场的全部內容,希望文章能夠幫你解決所遇到的問題。

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