停车场计费函数c语言 停车场计时收费函数c语言( 三 )


}
}
else
//车不在停车场中
cout"您的车不在停车场中!\n";
}
//初始化顺序栈
void InitStack(SeqStack parking)
{
parking.top = -1;
}
//判栈空
int StackEmpty(SeqStack parking)
{
if(parking.top == -1)
return 1;
else
return 0;
}
//判栈满
int StackFull(SeqStack parking)
{
if(parking.top == MAX_STOP-1)
return 1;
else
return 0;
}
//入栈
void StackPush(SeqStack parking , char *license_plate , int stop_time)
{
parking.top++;
strcpy(parking.STOP[parking.top].license_plate , license_plate);
parking.STOP[parking.top].state = 'p';
parking.STOP[parking.top].time = stop_time;
}
//出栈 返回栈顶指针
int StackPop(SeqStack parking)
{
if(StackEmpty(parking))
return 0;
else
return parking.top--;
}
//取栈顶元素
int StackTop(SeqStack parking , char *license_plate , int time)
{
if(StackEmpty(parking))
return 0;
else
{
strcpy(license_plate , parking.STOP[parking.top].license_plate);
time = parking.STOP[parking.top].time;
return 1;
}
}
//显示所有
void Display(SeqStack parking)
{
if(parking.top == -1)
printf("停车场为空\n");
else
{
while(parking.top != -1)
{
cout"车牌号为:"parking.STOP[parking.top].license_plate;
cout",停在"parking.top + 1 "号车位上";
cout",已停"(GetTickCount()-parking.STOP[parking.top].time)/TIME_MS_TO_CONUTTIME_COUNTendl;
parking.top--;
}
}
}
//初始化队列
void InitList(LQueue *sidewalk)
{
sidewalk = (LQueue *)malloc(sizeof(LQueue));
sidewalk-front=sidewalk-rear = NULL;
}
//入队
void In_LQueue(LQueue *sidewalk,char *license_plate)
{
QNode *car_on_sidewalk;
car_on_sidewalk = (QNode *)malloc(sizeof(QNode));//为新节点开辟新空间
strcpy(car_on_sidewalk-WAIT.license_plate , license_plate); //将数据写入节点
car_on_sidewalk-WAIT.state = 's';//写入停车信息
car_on_sidewalk-WAIT.time = GetTickCount();//写入停车时间
car_on_sidewalk-next = NULL;
if(Empty_LQueue(sidewalk))//队空则创建第一个节点
sidewalk-front = sidewalk-rear = car_on_sidewalk;
else
{
//队非空插入队尾
sidewalk-rear-next = car_on_sidewalk;
sidewalk-rear = car_on_sidewalk;
}
}
//判队空
int Empty_LQueue(LQueue *q)
{
if(q-front == NULL)
return 1;
else
return 0;
}
//判队长度 返回队长
int QueueLength(LQueue *q)
{
QNode *p=q-front;
int i=0;
while(p != NULL)
{
i++;
p=p-next;
}
return i;
}
//出队 成功返回1 队空返回0
int Out_LQueue(LQueue *sidewalk,char *license_plate)
{
QNode *car_on_sidewalk;
if(Empty_LQueue(sidewalk))//如果队空返回0
return 0;
car_on_sidewalk = sidewalk-front;
strcpy(license_plate , car_on_sidewalk-WAIT.license_plate);//取出队头元素
if(sidewalk-front == sidewalk-rear)//队中只有一个元素
sidewalk-front = sidewalk-rear=NULL;//删除元素
else
sidewalk-front = sidewalk-front-next; //队头指针后移
free(car_on_sidewalk);//释放指针
return 1;
}
//检查离开的车是否在停车场中 返回车在停车场中位置 不在则返回0
int LeaveCheck(SeqStack parking,char *license_plate)
{
int flag = parking.top+1;//定义变量记录当前车在停车场中位置
if(StackEmpty(parking))
return 0;
else
{
//查找离开车所在位置

推荐阅读