数据结构——练习题-银行牌号系统代码

老师布置的一道上机作业,作为参考,利用队列构成

#include 
#include 
using namespace std;

#define OK 1
#define ERROR 0
typedef int Status;

int ID = 0; //全局变量,当前的编号


//结点类型
typedef struct node{
	int id; //数据域,排队的编号
	struct node* next; //指针域
}Node;

//队列类型
typedef struct queue{
	struct node* front; //队头指针
	struct node* rear; //队尾指针
	int count; //当前的人数
}Queue;

//队列初始化
Status initQueue(Queue& Q){
	Node* p = (Node*)malloc(sizeof(Node));
	if(!p){
		cout << "内存开辟失败!" << endl;
		return ERROR;
	}
	p->next = NULL;
	Q.front = p;
	Q.rear = p;
	Q.count = 0;

	return OK;
}

//取号
Status arrive(Queue& Q){
	//创建结点
	Node* p = (Node*)malloc(sizeof(Node));
	if(!p){
		cout << "内存开辟失败!" << endl;
		return ERROR;
	}
	p->id = ++ID;
	p->next = NULL;
	//结点插入队尾
	Q.rear->next = p;
	//更新队尾指针
	Q.rear = Q.rear->next;
	Q.count++;
	cout << "您的编号是:" << p->id;
	cout << ",您的前面还有" << Q.count - 1;
	cout << "人在等待" << endl;
}

//叫号
Status leave(Queue& Q){
	if(Q.count != 0){
		//队头结点离队
		Node* p = Q.front->next;
		Q.front->next = p->next;
		free(p);
		Q.count--;
		p = Q.front->next;	
		//读取新队头结点的数据域
		if(Q.count == 0){
			Q.rear = Q.front;
			cout << "当前无排队顾客" << endl;
		}
		else{
			cout << "请" << p->id << "号顾客来窗口办理业务\n";
		}

		return OK;
	}	
	else{
		cout << "队列为空,错误操作!" << endl;
		return ERROR;
	}
	
}

int main(){
	Queue bankQ;
	initQueue(bankQ);
	int flag; //0-退出,1-取号,2-叫号
	cout << "请输入指令:";
	cin >> flag;
	while(flag != 0){
		if(flag == 1){
			arrive(bankQ);
		}
		else{
			leave(bankQ);
		}
		cout << "请输入指令:";
		cin >> flag;
	}

	return 0;
}

 

 

你可能感兴趣的:(数据结构,c++,算法)