⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bus2.cpp

📁 一个停车场管理的模拟程序!VC++6.0下开发~!
💻 CPP
字号:
#include<stdlib.h>
#include<stdio.h>

const  STACK_INIT_SIZE=100; 
const  STACKINCREMENT=10;  

enum status{FALSE=0 ,ERROR=0, OVERFLOW=0,TRUE=1,OK=1};
enum status2{A=0 ,D=1};
typedef struct
{
	status2 inorout;
	int number;
	int time;

}car_infor;

typedef struct{
	int *base;
	int *top;
	int stacksize;
}sqstack;

//typedef struct qnode{
//	sqstack data;
//	struct qnode *next;
//}qnode,*queueptr;

//typedef struct{
//	queueptr front;
//	queueptr rear;
//}linkqueue;


sqstack InitStack(sqstack &S)
{
	S.base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));
    if (!S.base)
		exit(OVERFLOW);											
    S.top = S.base;
    return S;
}																	

status GetTop(sqstack &S, int e) 
{

												// 若栈不空,则用e 返回S的栈顶元素,
												// 并返回OK;否则返回ERROR
	if (S.top==S.base)
    return ERROR;									//栈空
    e=*(S.top-1);
    return OK;
}													 // GetTop
	

status Push(sqstack &S, int e) 
{

																	  //插入元素e为新的栈顶元素
	if (S.top-S.base>=S.stacksize) 
	{   
																	//栈满,追加存储空间
		S.base=(int*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int));
		if (!S.base)
			exit(OVERFLOW);														//存储分配失败
		S.top = S.base + S.stacksize;
		S.stacksize+=STACKINCREMENT;
	}
	*S.top++ = e;
	return OK;
}																			// Push



status Pop(sqstack &S, int e)
{							               // 若栈不空,则删除S的栈顶元素,用e返回
									   // 其值,并返回OK;否则返回ERROR
	if (S.top==S.base)						 // 栈空,栈溢出(下溢)
    return ERROR;
    e = *--S.top;
    return OK;
}												//Pop



typedef struct  QNode 
{ 
	int			data ;
    struct    QNode  *next ;
}Qnode,*QueuePtr;        
                                            // 定义链队列中的一个结点结构
typedef struct    
{
	QueuePtr  front;       // 队头指针
    QueuePtr  rear;        // 队尾指针
}*LinkQueue;               // 定义链队列结构


LinkQueue InitQueue(LinkQueue &Q) 
{
																// 构造一个空队列Q
	Q->front = Q->rear =(QueuePtr)malloc(sizeof(QNode));
																		//产生一个头结点,头、尾指针均指向头结点
	if (!Q->front) exit (OVERFLOW);                   
																// 存储分配失败
    Q->front->next = NULL;
    return Q;
}      



status EnQueue (LinkQueue &Q, int e) 
{
	QueuePtr p;														// 插入元素e为Q的新的队尾元素
	p=(QueuePtr)malloc(sizeof(QNode));
    if (!p)  
		exit (OVERFLOW);								 // 存储分配失败
    p->data =e;   
	p->next = NULL;
    Q->rear->next = p;    
	Q->rear = p;
    return OK;
}


status OutQueue(LinkQueue &Q ,int e)
{
	QueuePtr p;
	p=Q->front->next;									  //p指向队头元素
	Q->front->next= p->next; 
														 //修改头结点指针域,指向新的队头元素
	e= p->data;
	free(p);											//释放被删掉的原队头元素


	p =Q->front->next;									// p指向队头元素
	Q->front->next= p->next; 
														// 修改头结点指针域,指向NULL
	e= p->data;
	if (Q->rear==p)  Q->rear=Q->front;
	free(p);
	return OK;										// 释放被删掉的原队头元素
}

//status DeQueue (LinkQueue &Q, QElemType &e) {
													// 若队列不空,则删除Q的队头元素,
													// 用 e 返回其值,并返回OK;否则返回ERROR
//	LinkQueue &p;
 //  if (Q->front == Q->rear)    
//	   return ERROR;									//队空
 //  p = Q->front->next; e = p->data;							//p指向队头元素   
 //  Q->front->next = p->next; 
																//修改头结点指针域,指向新的队头元素
 //  if (Q->rear==p) 
//	   Q->rear=Q->front;
 //  free (p);														//释放被删掉的原队头元素
 //  return OK;
//}








void main()
{
	
 //	int i,n;
	printf("haha\n");

	sqstack buspark;
	sqstack bustemp;
	LinkQueue busroad;

	printf("ww\n");

	car_infor bus;

	printf("gg");

	InitStack(buspark);
	InitStack(bustemp);
	InitQueue(busroad);

	printf("ee");

	printf("Please input the datas (A/D,number,time) : ");
	scanf("%c,%d,%d",&bus.inorout,&bus.number,&bus.time);


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -