顺序队列

    #include <iostream>
    using namespace std;
    #define OK 1
    #define ERROR 0
    #define OVERFLOW -2
    typedef int Status;
    
    typedef struct {
    	int* base;
    	int front;
    	int rear;
    }SqQueue;
    
    Status InitQueue(SqQueue &Q) {
    	Q.base = new int[10];
    	if (!Q.base) exit(OVERFLOW);
    	Q.rear = 0;
    	Q.front = 0;
    	return 0;
    }
    
    Status QueueLenght(SqQueue &Q) {
    	return(Q.rear -Q.front + 10) % 10;
    }
    
    Status EnQueue(SqQueue& Q, int e) {
    	if ((Q.rear + 1) % 10 == Q.front) return ERROR;	
    	Q.base[Q.rear]=e;
    	Q.rear = (Q.rear + 1) % 10;
    	return OK;
    }
    
    Status DeQueue(SqQueue& Q, int& e) {
    	if (Q.front == Q.rear) return ERROR;
    	e = Q.base[Q.front];
    	Q.front = (Q.front + 1) % 10;
    	return OK;
    }
    
    Status GetHead(SqQueue& Q) {
    	if (Q.front != Q.rear) return Q.base[Q.front];
    }
    
    int main()
    {
    	SqQueue sq;
    	int status,in,num,temp,len,HeadEle;
    	InitQueue(sq);
    
    	while (true)
    	{
    	cout << "1、数据入队。" << endl;
    	cout << "2、队伍长度。" << endl;
    	cout << "3、数据出队。" << endl;
    	cout << "4、队头元素。" << endl;
    	cout << "5、输入其他数字退出" << endl;
    	cout << "------------------------------" << endl;
    	cout << "你的选择:";
    	cin >> in;
    	switch (in)
    	{
    	case 1:
    		cout << "需要入队的数据:" << endl;
    		cin >> num;
    		if (EnQueue(sq, num) == 0) {
    			cout << "队满" << endl;
    			cout << "------------------------------" << endl;
    			continue;
    		}
    		else {
    			cout << "入队成功->" << num << endl;
    			cout << "------------------------------" << endl;
    			continue;
    		}
    	case 2:
    		len = QueueLenght(sq);
    		cout << "当前队长->" << len << endl;
    		cout << "------------------------------" << endl;
    		continue;
    	case 3:
    		if (DeQueue(sq, temp) == 1){
    			cout << "已出队->" << temp << endl;
    			cout << "------------------------------" << endl;
    			continue;
    		}
    		else{
    			cout << "队空" << endl;
    			cout << "------------------------------" << endl;
    			continue;
    		}
    	case 4:
    		HeadEle = GetHead(sq);
    		cout << "当前头元素->" << HeadEle << endl;
    		cout << "------------------------------" << endl;
    		continue;
    	default:
    		cout << "输入错误,程序退出"<< endl;
    		cout << "------------------------------" << endl;
    		break;
    	}
    	break;
    	}
    }





作者:qianyuzz

出处:https://www.cnblogs.com/qianyuzz/p/17059932.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   qianyuzz  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示