📄 bus2.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 + -