首页 > 其他分享 >顺序队列

顺序队列

时间:2023-01-18 15:47:45浏览次数:34  
标签:Status 顺序 return 队列 SqQueue int front rear

    #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;
    	}
    }





标签:Status,顺序,return,队列,SqQueue,int,front,rear
From: https://www.cnblogs.com/qianyuzz/p/17059932.html

相关文章

  • 顺序查找和二分查找实验
    数据结构课上的一份实验报告主要是应对实验报告,应该存在逻辑错误的地方没改。#include<iostream>typedefintKeyType;typedefintInfoType;#defineMAXSIZE100......
  • C实现顺序栈各功能
    VS调试的程序,scanf_s会报错。代码加上#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<stdlib.h>#defineOK1#defineERROR0#defineMAXSIZE100#......
  • 顺序栈实现栈的各种功能
    #include<iostream>#defineOK1#defineERROR0#defineMAXSIZE100typedefintElemType;typede......
  • 链队列
    include<iostream>usingnamespacestd;#defineOK1#defineERROR0typedefintElemType;typedefstructQNode{ ......
  • 顺序链表
    #include<iostream>#defineMAXSIZE100#defineERROR0#defineOK1usingnamespacestd;typedefstruct{ int*elem; in......
  • TCP 队列
    一、TCP队列1、synsqueue:半连接队列TCP三次握手(参考:TCP建立连接之三次握手),第一步,服务端接收到客户端发送的syn消息后,将连接信息放入synsqueue,此时,双方连接尚未建......
  • 剑指offer面试题21(java版):调整数组顺序使奇数位于偶数前面
    ​​welcometomyblog​​剑指offer面试题21(java版):调整数组顺序使奇数位于偶数前面题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位......
  • 数据结构-队列
    数据结构-队列队列是一种特殊的线性表,他的性质只允许元素从最后入,从最前出,所以他也满足FIFO(FirstInFirstOut)性质,也就是先进先出。我们可以先试着使用函数在C++中定......
  • 遇到难题 没有固定顺序输出的数,应该怎样存到新数组中,循环的条件是啥??
    packagecom.fqs.demo;publicclassZhiNumber{publicstaticintcount_zhi=0;publicstaticvoidmain(String[]args){//计算1到10之间的质......
  • 图解 SQL 执行顺序,通俗易懂!
    这是一条标准的查询语句:   这是我们实际上SQL执行顺序:我们先执行from,join来确定表之间的连接关系,得到初步的数据where对数据进行普通的初步的筛选groupby分......