• 顺序队列


    #include <iostream>
    #define MaxSize 50
    using namespace std;
    typedef int DataType;
    //队列的顺序存储结构 
    typedef struct{  
    	DataType data[MaxSize];  //存放队列中的数据元素 
    	int front,rear;			//队头指针和队尾指针 
    }SqQueue;
    
    /*
    假设队列空间够用 
    顺序队列的缺点:
    1.可能存在上溢和下溢
    2.所以真正应用时要考虑,数组大小,判断溢出时怎莫作 
    	顺序队列:队头删除数据元素,队尾插入数据元素
    	1.数据运算
    		1.InitQueue(&Q):初始化队列,构造一个空队列
    		2.QueueEmpty(&Q):队列判空,若队列为空,返回true,否则返回false
    		3.EnQueue(&Q,x):入队,若队列未满,将数据元素插入到队尾
    		4.DeQueue(&Q,&x):出队,若队列非空,删除队头元素,并用x返回
    		5.GetHead(Q,&x):读出对头元素,若队列非空,则将队头元素赋值给x
    	2.队列术语 
    		1.队头(front):允许删除的一端
    		2.队尾(rear):允许插入的一端
    		3.空队列:不含任何元素的队列 
    	3.顺序队列的判断条件 
    		1.队列的初始状态:Q.front=Q.rear=0
    		2.队列的满了条件:Q.rear-Q.front=MaxSize
    		3.队列空了的条件:Q.rear=Q.front 
    */
    
    
    //初始化一个顺序队列 
    void InitQueue(SqQueue &Q){
    	//队列的初始状态 队列空,并且位置为0 Q.front=Q.rear=0
    	Q.front=Q.rear=0; 
    } 
    //队列判空
    bool QueueEmpty(SqQueue &Q){
    	if(Q.front==Q.rear){
    		cout<<"对列为空!"<<endl;
    		return true;
    	}else{
    		return false;
    	}
    } 
    //入队
    bool EnQueue(SqQueue &Q,DataType x){
    	if(Q.rear-Q.front==MaxSize){
    		cout<<"队列已满,无法插入!"<<endl;
    		return false;
    	}else{
    		Q.data[Q.rear++]=x;
    		return true;
    	}
    } 
    //出队
    bool DeQueue(SqQueue &Q,DataType &x){
    	if(Q.rear==Q.front){
    		cout<<"队列为空,无法出队!"<<endl;
    		return false;
    	}else{
    		x=Q.data[Q.front++];
    		return true;
    	}
    } 
    //读队头元素
    bool GetHead(SqQueue &Q,DataType &x){
    	if(Q.rear==Q.front){
    		cout<<"队列为空!无法得到队头元素"<<endl;
    		return false;
    	} else{
    		x=Q.data[Q.front];
    		return true;
    	}
    } 
    int main()
    {
    	SqQueue Q;
    	InitQueue(Q);
    	EnQueue(Q,100);
    	int x;
    	DeQueue(Q,x);
    	cout<<x<<endl;
    	QueueEmpty(Q);
    	return 0;
    }
    

      

  • 相关阅读:
    Kettle 使用入门
    git mac客户端使用提交与同步
    MAC 远程桌面链接 证书或链接无效
    mac下wifi无法连接的问题
    mysql时间段内查询
    mybatis 特殊符号及like的使用
    mac下剪切文件或文件夹
    eclipse下使用git下载和上传项目
    unbutu下搭建FTP服务
    mybatis 的if else
  • 原文地址:https://www.cnblogs.com/nanfengnan/p/14402163.html
Copyright © 2020-2023  润新知