顺序队列和链式队列

Posted lyt888

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了顺序队列和链式队列相关的知识,希望对你有一定的参考价值。

#include<iostream>
using namespace std;
#define ElemType int
const int MaxSize=50;
typedef struct{
    ElemType data[MaxSize];
    int front=0,rear=0;
}SqQueue;
bool EnQueue(SqQueue &Q,ElemType x){
    if((Q.rear+1)%MaxSize==Q.front)return false;
    Q.data[Q.rear]=x;
    Q.rear=(Q.rear+1)%MaxSize;
    return true;
}
bool DeQueue(SqQueue &Q,ElemType &x){
    if(Q.front==Q.rear)return false;
    x=Q.data[Q.front];
    Q.front=(Q.front+1)%MaxSize;
    return true;
}
int Length(const SqQueue &Q){
    return (Q.rear-Q.front+MaxSize)%MaxSize;
}
int main(){
    SqQueue Q;
    for(int i=1;i<=10;i++){
        EnQueue(Q,i);
    }
    cout<<Length(Q)<<endl;
    int x;
    while(Q.front!=Q.rear){
        DeQueue(Q,x);
        cout<<x<<" ";
    }
    cout<<endl;
    return 0;
}
#include<iostream>
using namespace std;
#define ElemType int
typedef struct QNode{
    ElemType data;
    struct QNode *next;
}QNode; 
typedef struct{
    QNode *front,*rear;
}LinkQueue;
void EnQueue(LinkQueue &Q,ElemType x){
    QNode *p=new QNode;
    p->data=x;
    p->next=NULL;
    Q.rear->next=p;
    Q.rear=p;
}
bool DeQueue(LinkQueue &Q,ElemType &x){
    if(Q.front==Q.rear)return false;
    QNode *p=Q.front->next;
    x=p->data;
    Q.front->next=p->next;
    if(p==Q.rear)Q.rear=Q.front;
    delete p;
    return true; 
}
int main(){
    LinkQueue Q;
    Q.front=Q.rear=new QNode;
    Q.front->next=NULL;
    for(int i=1;i<=10;i++){
        EnQueue(Q,i);
    }
    int x;
    while(Q.front!=Q.rear){
        DeQueue(Q,x);
        cout<<x<<" ";
    }
    cout<<endl;
    return 0;
}

 

以上是关于顺序队列和链式队列的主要内容,如果未能解决你的问题,请参考以下文章

顺序队列和链式队列

队列的定义与操作——顺序存储和链式存储

数据结构-队列-顺序链式存储

Python数据结构系列☀️《队列(顺序队列链式队列双端队列)》——知识点讲解+代码实现☀️

顺序循环队列和链式存储队列(带头结点和不带头结点)

数据结构(C语言版)严蔚敏->队列的顺序存储(循环队列)和链式存储