数据结构 停车场系统模拟代码.docx
- 文档编号:26315222
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:21
- 大小:18.38KB
数据结构 停车场系统模拟代码.docx
《数据结构 停车场系统模拟代码.docx》由会员分享,可在线阅读,更多相关《数据结构 停车场系统模拟代码.docx(21页珍藏版)》请在冰豆网上搜索。
数据结构停车场系统模拟代码
#include
#include
#include
usingnamespacestd;
template
classLinStack;
template
classStackNode//设计堆栈结点类
{
friendclassLinStack
private:
StackNode
public:
Tdata;
StackNode(constT&item,StackNode
{
data=item;
next=ptrNext;
}
~StackNode(){};//析构函数
};
template
classLinStack//堆栈类的设计
{
private:
StackNode
intsize;//数据元素个数
public:
LinStack(void);//01堆栈类的构造函数
~LinStack(void);//02堆栈类的析构函数
intStackSize(void)const;//03取元素个数
intStackEmpty(void)const;//04判断堆栈是否为空
voidPush(constT&item);//05入栈****(重点)
TPop(void);//06出栈****(重点)
TPeek(void);//07取栈顶元素
voidClearStack(void);//08清空堆栈****(重点)
};
template
LinStack
:
LinStack()//01
{
top=NULL;
size=0;
}
template
LinStack
:
~LinStack()//02
{
ClearStack();
top=NULL;
}
template
intLinStack
:
StackSize(void)const//03
{
returnsize;
}
template
intLinStack
:
StackEmpty(void)const//04
{
if(size<=0)return1;
elsereturn0;
}
template
voidLinStack
:
Push(constT&item)//05
{
//构造新结点,它的data域为item,next域为top,这样就可以使新结点接到原来首节点前!
StackNode
top=newNode;//然后再使新结点为栈顶,即top指向新结点.
size++;
}
template
TLinStack
:
Pop()//06
{
if(size<=0)
{
cout<<"堆栈已空无元素可删!
"< exit(0); } StackNode Tdata=top->data; deletetop; size--; top=p; returndata; } template TLinStack : Peek()//07 { returntop->data; } template voidLinStack : ClearStack()//08 { StackNode p=top; while(p! =NULL) { p1=p; p=p->next; deletep1; } top=p; size=0; } template classLinQueue; template classQueueNode//设计队列结点类 { friendclassLinQueue private: QueueNode public: Tdata; QueueNode(constT&item,QueueNode { data=item;next=ptrNext; } ~QueueNode(){};//析构函数 }; template classLinQueue//设计队列类 { private: QueueNode QueueNode intsize;//元素个数 public: LinQueue(void);//01队列类的构造函数 ~LinQueue(void);//02析构函数 voidQinsert(constT&item);//03入队列****(重点) TQDelete(void);//04出队列****(重点) TQFront(void)const;//05取队头元素 intQueueEmpty(void)const//06判断队列是否为空 { returnsize<=0; };//注意这个有分号 voidClearQueue(void);//07清空队列****(重点) intGetSize(void)const//08取队列元素个数 { returnsize; }; }; template LinQueue : LinQueue()//01 { front=NULL; rear=NULL; size=0; } template LinQueue : ~LinQueue()//02 { //ClearQueue(); front=rear=NULL; } template voidLinQueue : Qinsert(constT&item)//03 { QueueNode if(rear! =NULL)rear->next=newNode; rear=newNode; if(front==NULL)front=newNode; size++; } template TLinQueue : QDelete()//04 { if(size==0) { cout<<"队列已空无元素可删"< exit(0); } QueueNode Tdata=front->data; deletefront; front=p; size--; returndata; } template TLinQueue : QFront(void)const//05 { returnfront->data; } template voidLinQueue : ClearQueue(void)//07 { QueueNode p=front; while(p! =NULL) { p1=p; p=p->next; if(p! =rear) { deletep1; } else { deletep; break; } } front=p; size=0; } structCar { stringNum; floatCometime; floatLeavetime; floatCometime1; Car() { Num="0"; Cometime=-1; Leavetime=-1; Cometime1=0; } }; voidparking(LinStack voidLeaveing(LinStack voidDisplaying(LinStack voidmain() { LinStack LinQueue Cara,b; intn,j,i=1;//定义车场内和便道容量变量 floatk,k1;//定义相应的收费价 floatmax=-1,n1,j1; charM[100],m='0';///////// cout<<"请输入停车场车容量.n"<<"";//223 while (1) { cin>>n1; if(! cin.good()) { cout<<"输入错误! 输入数据不符合要求! "<<""; cin.clear(); fflush(stdin); continue; } break; } n=n1; cout<<"请输入停车场便道的车容量.j"<<""; while (1) { cin>>j1; if(! cin.good()) { cout<<"输入错误! 输入数据不符合要求! "<<""; cin.clear(); fflush(stdin); continue; } break; } j=j1; cout<<"请输入停车场收费单价.k"<<""; while (1) { cin>>k; if(! cin.good()) { cout<<"输入错误! 输入数据不符合要求! "<<""; cin.clear(); fflush(stdin); continue; } break; } cout<<"请输入便道收费单价.k1"<<""; while (1) { cin>>k1; if(! cin.good()) { cout<<"输入错误! 输入数据不符合要求! "<<""; cin.clear(); fflush(stdin); continue; } break; } while(m! ='4') { cout< cout<<"*****************************"< cout<<"1车辆进场操作"< cout<<"2车辆出场操作"< cout<<"3显示停车情况操作"< cout<<"4退出操作"< cout<<"****************************"< cout<<"请输入选择.M"<<""; cin>>M; if(strcmp(M,"1")==0)m='1';//////// elseif(strcmp(M,"2")==0)m='2'; elseif(strcmp(M,"3")==0)m='3'; elseif(strcmp(M,"4")==0)m='4'; elsem='0'; switch(m) { case'1': {cout<<"车入场项: "< case'2': {cout<<"车出场项: "< case'3': {cout<<"显示停车情况: "< case'4': break; default: cout<<"没有此选项! "< break; } /*if(m=='4') { break; }*/ } } voidparking(LinStack { charNum='1'; charM[100]; if(q.GetSize()>=j) { cout< cout<<"车场车位已满! 请等待! "< } else {// while(Num=='1'&&q.GetSize() {//// cout<<"请输入车牌号和到达时间"< cout<<""; cin>>b.Num; while (1) { cin>>b.Cometime; if(! cin.good()) { cout<<"输入错误! 输入数据不符合要求! 请重新输入入场时间! "<<""; cin.clear(); fflush(stdin); continue; } break; } if(b.Num! ="##")//////// { if(s.StackSize() { if(s.StackEmpty()==0&&s.Peek().Cometime>b.Cometime)cout<<"车到达时间输入有误! (时间要小于之前车辆到达的时间)"< else { b.Cometime1=b.Cometime; max=b.Cometime; s.Push(b); cout<<"车牌为"; cout< cout< } } else { if((! q.QueueEmpty()&&q.QFront().Cometime>b.Cometime)||b.Cometime (时间要小于之前车辆到达的时间)"< elseif(q.GetSize() { max=b.Cometime; b.Cometime1=b.Cometime; q.Qinsert(b); cout<<"车牌为"; cout< cout< } else cout<<"停车场所有车位已满! 请稍候! "< } } cout<<"****是否继续入场? "< cout<<"1.继续入场"<<"2.返回主菜单"< cout<<"请输入你的操作编号: "<<""; cin>>M; if(strcmp(M,"1")==0)Num='1';//////// elseif(strcmp(M,"2")==0)Num='2'; elseNum='0'; if(Num=='0') { cout<<"没有此选项! 退出此操作! "; cout< } if(q.GetSize()>=j) { cout< cout<<"车场车位已满! 请等待! "< Num='2'; } }//// }// } voidLeaveing(LinStack ! { CarT,c; charNum='1'; charM[100]; LinStack while(Num=='1'&&b.Leavetime>=-1) {// floaty=0; if(b.Leavetime>0)a.Leavetime=b.Leavetime; cout<<"请输入车牌号和离开时间"< cout<<""; cin>>b.Num; while (1) { cin>>b.Leavetime; if(! cin.good()) { cout<<"输入错误! 输入数据不符合要求! 请重新输入出场时间! "<<""; cin.clear(); fflush(stdin); continue; } break; } if(s1.StackEmpty()==1||b.Leavetime<-1) { cout<<"输入有误! 停车场无此车! "< if(b.Leavetime>=-1)b.Leavetime=a.Leavetime;// (1) } elseif((! q.QueueEmpty()&&b.Leavetime { cout<<"车离开时间输入有误! 不能小于所有已经入场和在便道车的到达时间! "< (2) if(b.Leavetime>=-1)b.Leavetime=a.Leavetime; } elseif(a.Leavetime! =-1&&b.Leavetime { cout<<"车离开时间输入有误! 不能小于所有已经离开的车的离开时间! "< if(b.Leavetime>=-1)b.Leavetime=a.Leavetime; } else { while(s1.StackEmpty()==0&&b.Num! =s1.Peek().Num)//////////////// { T=s1.Pop();//查找车 s2.Push(T); } if(s1.StackEmpty()==1) { cout<<"输入有误! 停车场无此车! 4"< while(s2.StackEmpty()==0) { s1.Push(s2.Pop()); } if(b.Leavetime>=-1)b.Leavetime=a.Leavetime; } else { T=s1.Pop(); y=(b.Leavetime-T.Cometime)*k+(T.Cometime-T.Cometime1)*k1; cout<<"车牌为"; cout< cout< while(s2.StackEmpty()==0) { s1.Push(s2.Pop()); } if(! q.QueueEmpty())///////////////////// { CarT1; T1=q.QDelete(); T1.Cometime=b.Leavetime; max=b.Leavetime;// s1.Push(T1); } } } cout<<"****是否继续出场? "< cout<<"1.继续出场"<<"2.返回主菜单"< cout<<"请输入你的操作编号: "<<""; cin>>M; if(strcmp(M,"1")==0)Num='1';//////// elseif(strcmp(M,"2")==0)Num='2'; elseNum='0'; if(Num=='0') { cout<<"没有此选项! 退出此操作! "; cout< }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 停车场系统模拟代码 停车场 系统 模拟 代码