stack---停车场

来源:互联网 发布:图后期制作软件 编辑:程序博客网 时间:2024/04/26 23:04
#define stacksize 5#include<cstdio>#include<iostream>#include<malloc.h>#define LEN sizeof(linked_queue)using namespace std;void wait(int);typedef struct sqstack{    int data[stacksize];    int top;}SqstackTp;SqstackTp stopstack{{},-1};          //for 0 - 9typedef struct linked_queue    //waiting queue{ int data; struct linked_queue *next;}LqueueTp;LqueueTp waitqueue;LqueueTp *fron=NULL,*rear=NULL;int queuenum=0;void gooutcar(int carnum){ int i=0;  while(stopstack.data[i]!=carnum&&i<=stopstack.top)  {      i++;     //得出车正确位置来;  }  if(stopstack.data[i]<=stopstack.top)  {      cout<<"没有查询到该车辆的信息";  }else{  for(int j=i;j<=stopstack.top;j++)    //将该车删除  {   int temp=j+1;      stopstack.data[j]=stopstack.data[temp];  }  cout<<carnum<<"离开停车场,";  if(fron&&fron->next)       //由于出队列导致的队列空 font后边rear所以加两个判断  {       stopstack.data[stopstack.top]=fron->next->data;      fron=fron->next;      cout<<stopstack.data[stopstack.top]<<"由便捷车道进入停车场"<<endl;  }  else{        cout<<"便捷车道空,无车辆进入停车场"<<endl;         stopstack.top--;  }}}void stopcar (int carnum){if(stopstack.top==stacksize-1){    cout<<"停车栈满,";    wait(carnum);    cout<<carnum<<"进入便捷车道"<<endl;}else{   stopstack.top++;   stopstack.data[stopstack.top]=carnum;   cout<<carnum<<"由外界进入停车场"<<endl;}}void tip(){   int flag;     cout<<"     *******************************\n"<<endl;    cout<<"       停车按1      出车按2\n       显示停车栈3  显示便捷车道4\n       退出系统按0 \n\n";    while(cin>>flag)    {        if(flag==1)    {     int carnum;         cout<<"请输入停车车牌号\n";         cin>>carnum;        stopcar(carnum);    }    else if(flag==2)    {        int carnum;        cout<<"请输入出车车牌号\n";        cin>>carnum;        gooutcar(carnum);    }    else if(flag==3)    {  cout<<"停车栈|";        for(int i=0;i<=stopstack.top;i++)            cout<<stopstack.data[i]<<" |";            cout<<endl;    }    else if(flag==4)    {         LqueueTp *p3=fron;    cout<<"便捷车道|";     if(p3)     {while(p3->next!=NULL)    {   p3=p3->next;        cout<<p3->data<<" |";    }    }     cout<<endl;    }    if(flag==0)    break;//    cout<<"\n     *****停车1*****出车2*****停车栈3*****便捷车道4*****退出系统按0*** \n";    }}void wait(int carnum){    if(queuenum==0)  {       queuenum++;     rear=fron=(LqueueTp *)malloc(sizeof(LqueueTp));     LqueueTp *p1;     p1=(LqueueTp *)malloc(sizeof(LqueueTp));     p1->data=carnum;     p1->next=NULL;     rear->next=p1;     rear=p1;//     cout<<"1中现实front"<<front->data;//     cout<<"1中现实rear"<<rear->data;//     cout<<"1中现实frontnext"<<front->next->data;  }  else  {      queuenum++;      LqueueTp *p1;      p1=(LqueueTp *)malloc(sizeof(LqueueTp));      p1->data=carnum;      p1->next=NULL;//      cout<<"2中现实p1next"<<p1->next->data;//      cout<<"2中现实p1data"<<p1->data;      rear->next=p1;      rear=p1;  }}int main(){    tip();    return 0;}

原创粉丝点击