`

数据结构之队列的实现

阅读更多

1、顺序队列的实现

 

typedef char ElemType;
typedef struct{

    ElemType elem[MaxSize];
    int front,rear;
}SqQueue;


void InitQueue(SqQueue *&q)
{
    q=(SqQueue *)malloc(sizeof(SqQueue));
    q->front=q->rear=0;

}
void ClearQueue(SqQueue *&q)
{
    free(q);

}
int QueueLength(SqQueue *q){

    return (q->rear-q->front+MaxSize)%MaxSize;

}
int QueueEmpty(SqQueue *q){

    return q->front==q->rear;
    
}
int enQueue(SqQueue *&q,ElemType e){
     
    if((q->rear+1)%MaxSize==q->front){
        return 0;
    }
    q->rear=(q->rear+1)%MaxSize;
    q->elem[q->rear]=e;
    return 1;
    
}
int deQueue(SqQueue *&q,ElemType &e){
    if(q->front==q->rear){
        return 0;
    }
    q->front=(q->front+1)%MaxSize;
    e=q->elem[q->front];
    return 1;
    
}

 

2、链式队列的实现

 

typedef char ElemType;
typedef struct qnode{
    ElemType data;
    struct qnode *next;
}QNode;
typedef struct{
    QNode *front;
    QNode *rear;
}LiQueue;



void InitQueue(LiQueue *&q){
    q=(LiQueue *)malloc(sizeof(LiQueue));
    q->front=q->rear=NULL;
   
}
void ClearQueue(LiQueue *&q){
    QNode *p=q->front;
    if(p!=NULL){
        QNode *r=p->next;
        while(r!=NULL){
            free(p);
            p=r;
            r=r->next;
        }
        free(p);
    }
    
    free(q);

}
int QueueLength(LiQueue *q){
    QNode *p=q->front;
    int i=0;
    while(p!=NULL){
        i++;
        p=p->next;
    }
    return i;
    
}
int QueueEmpty(LiQueue *q){
    return q->rear==NULL;
}
void enQueue(LiQueue *&q,ElemType e){
    QNode *qnode;
    qnode=(QNode*)malloc(sizeof(QNode));
    qnode->data=e;
    qnode->next=NULL;
    if(q->rear==NULL){
        q->front=q->rear=qnode;
    }else{
        q->rear->next=qnode;
        q->rear=qnode;
    }
    
    
}
int deQueue(LiQueue *&q,ElemType &e){
    QNode *t;
    if(q->rear==NULL){
        return 0;
    }
    if(q->front==q->rear){
        t=q->front;
        q->front=q->rear=NULL;
    }else{
        t=q->front;
        q->front=q->front->next;
    
    }
    e=t->data;
    free(t);
    return 1;
    
}
 
分享到:
评论

相关推荐

    数据结构 队列实现 数据结构 队列实现

    ### 数据结构:队列实现详解 #### 一、队列概念与特性 在计算机科学领域,**队列**是一种常见的线性数据结构,遵循先进先出(First In First Out, FIFO)的原则。也就是说,最早添加到队列中的元素将是最先被移除的...

    数据结构队列的实现

    数据结构中的队列是一种线性数据结构,遵循“先进先出”(First In First Out, FIFO)的原则。在这个实验中,我们重点学习了如何用C++实现循环队列的存储和操作。 首先,循环队列的结构定义为`seqqueue`,包含一个...

    c语言数据结构的队列实现

    c语言数据结构的队列实现,新建队列,入队列,出队列,删除队列

    C# 数据结构实现队列

    以下是一个简单的队列实现示例: ```csharp using System; using System.Collections.Generic; public class Program { public static void Main() { Queue<int> myQueue = new Queue(); // 入队操作 ...

    数据结构:链队列

    链队列,顾名思义,是基于链表实现的队列数据结构。队列是一种遵循“先进先出”(FIFO,First In First Out)原则的数据结构,类似于现实生活中的排队等待。在链队列中,元素按照加入的顺序排列,第一个加入的元素被...

    经典数据结构队列的研究和实现.pdf

    在计算机程序设计中,队列的实现可以通过不同的数据结构来完成,主要包括数组和链表。数组实现的队列操作简单明了,但存在一个显著的缺点,即队列的大小在初始化时便已固定,难以应对动态变化的需求。数组队列的另一...

    队列,数据结构,c++实现,自创

    本篇将深入探讨队列的概念,数据结构的实现以及在C++中如何自创一个队列。 队列是一种先进先出(FIFO, First-In-First-Out)的数据结构,它的工作原理类似于现实生活中的排队。元素被添加到队列的后端(称为入队或...

    数据结构栈和队列解决迷宫问题

    数据结构栈和队列解决迷宫问题 本文档详细介绍了利用栈和队列解决迷宫问题的步骤,对于初学者学习数据结构能很好的进行辅导。本文档主要涉及到数据结构的两个重要概念:栈和队列,并介绍了如何使用这两个数据结构来...

    数据结构之队列

    在计算机科学中,数据结构是组织、存储和处理数据的方式,而队列是其中一种基本且重要的数据结构。队列是一种线性数据结构,遵循“先进先出”(First In First Out, FIFO)的原则,类似于现实生活中的排队等待服务。...

    数据结构 栈和队列PPT

    栈和队列是两种基础且重要的数据结构,广泛应用于各种算法和程序设计中。本课件及课堂笔记将深入探讨这两种数据结构的概念、特性以及它们在实际问题中的应用。 栈(Stack)是一种后进先出(LIFO,Last In First Out...

    C语言-数据结构-栈队列实现

    本主题关注的是如何使用C语言来实现数据结构中的栈和队列,这是两种基础但非常重要的抽象数据类型(ADT)。 栈(Stack)是具有后进先出(LIFO)特性的数据结构。它类似于一个堆叠的盘子,最新的元素被放在顶部,...

    数据结构——队列的实现

    3. 高级数据结构实现:如Java的`java.util.Queue`接口,提供了多种队列实现,如`ArrayDeque`(基于数组的双端队列)、`LinkedList`(链表实现)等。 队列的应用场景: 1. 打印机任务调度:新任务入队,完成的任务出...

    简单的数据结构单链队列的VC实现

    单链队列是一种常用的数据结构,它在计算机科学中扮演着重要的角色,特别是在处理序列操作时。本节我们将深入探讨单链队列的概念、它的实现原理以及如何在VC6.0环境下进行具体实现。 首先,我们需要理解数据结构中...

    C++数据结构与算法之双缓存队列实现方法详解

    C++数据结构与算法之双缓存队列实现方法详解 本文主要介绍了C++数据结构与算法之双缓存队列实现方法,结合实例形式分析了双缓存队列的原理、实现方法与相关注意事项。 知识点一:双缓存队列的定义 双缓存队列是一...

    数据结构-队列的实现代码(C语言版).rar

    数据结构 -- C语言版 -- 队列的部分实现代码,详细介绍参考数据结构--队列的系列博文。链接为:https://blog.csdn.net/songshuai0223/category_9742561.html。

    数据结构队列C++

    对于这个数据结构队列的作业,很可能是要求学生自定义一个队列类,以便更好地理解其内部工作原理。 自定义队列通常涉及以下关键组件和操作: 1. **初始化**:创建队列时,需要设置一个初始容量或默认为空。 2. **...

    数据结构链式队列程序

    在本项目中,“数据结构链式队列程序”是一个用C++语言实现的队列数据结构实例,它通过链表来存储元素,具有高效插入和删除操作的能力。 链式队列相比于数组实现的队列,其优势在于动态扩展性。数组队列在预先分配...

    数据结构 队列操作 C语言实现

    队列是一种基本的数据结构,它遵循“先进先出”(First In First Out, FIFO)的原则,类似于现实生活中的排队等待服务。本项目重点探讨了如何使用C语言来实现队列的操作。 在C语言中,我们可以使用数组或链表来模拟...

    数据结构利用队列实现二叉树的层次遍历实验三

    数据结构利用队列实现二叉树的层次遍历实验三 本实验的目的是掌握利用二叉树的递归结构性质建立二叉链表,掌握循环队列的基本算法和二叉树的遍历算法。实验中,我们将设计一个利用队列实现二叉树层次遍历的程序。 ...

Global site tag (gtag.js) - Google Analytics