C语言 简单的队列(数组队列)

//简单的队列

#include<stdio.h>
#include<stdlib.h>

#define datatype int
#define N 10

//定义队列结构体
struct queue{
    int front;//队头
    int endline;//队尾
    datatype data[N];//数据
};

typedef struct queue Queue;

Queue myQueue = { 0, 0, { 0 } };

//初始化队列
void initQueue(Queue * p);
//入队
void enQueue(Queue *pque, datatype data);
//出队
void deQueue(Queue *pque);
//遍历队列
void printfQueue(Queue *pque);

//数组队列只能使用一次,使用之后必须初始化后才可以继续使用

void main(){
    Queue *pque = (Queue *)malloc(sizeof(Queue));
    initQueue(pque);
    //插入队列
    enQueue(pque,1);
    enQueue(pque,2);
    enQueue(pque,8);
    enQueue(pque,3);
    enQueue(pque,7);
    //打印队列
    printfQueue(pque);
    //出队
    deQueue(pque);
    //打印队列
    printfQueue(pque);
    deQueue(pque);
    //打印队列
    printfQueue(pque);
    system("pause");
}

//初始化队列
void initQueue(Queue *pque){
    pque->front = pque->endline = 0;//清空队列
}

//入队
void enQueue(Queue *pque,datatype data){
    //判断队列是否溢出
    if (pque->endline<N)
    {
        //判断队列是否为空
        if (pque->front == pque->endline)//队头和队尾重合表明没有元素
        {
            //初始化队列
            initQueue(pque);
        }
        pque->data[pque->endline] = data;
        pque->endline += 1;

    }
    else{
        return;
    }

}

//出队
void deQueue(Queue *pque){
    //判断队列是否为空
    if (pque->front == pque->endline)
    {
        //队列为空
        return;
    }
    else{
        //直接弹出最后一个
        printf("弹出的元素是%d\n", pque->data[pque->front]);
        pque->front+= 1;
    }
}

//遍历队列
void printfQueue(Queue *pque){
    for (int i = pque->front; i < pque->endline; i++)
    {
        printf("%d\n", pque->data[i]);
    }
}

时间: 2024-10-10 14:10:44

C语言 简单的队列(数组队列)的相关文章

Python与数据结构[2] -&gt; 队列/Queue[0] -&gt; 数组队列的 Python 实现

队列 / Queue 数组队列 数组队列是队列基于数组的一种实现,其实现类似于数组栈,是一种FIFO的线性数据结构. Queue: <--| 1 | 2 | 3 | 4 | 5 |<-- 下面将使用Python中的list来替代C语言中的数组实现数组队列的数据结构. Note: 这里的实现并没有像C语言中的申请一块固定大小的数组,手动的定制数组中队列的头尾位置,而是利用list的特性直接完成,因此较为简单. 数组队列的实现与数组栈的实现基本类似,同时入列和出列也十分简单,仅需要对数组进行操作即

C语言实现使用动态数组实现循环队列

我在上一篇博客<C语言实现使用静态数组实现循环队列>中实现了使用静态数组来模拟队列的操作.由于数组的大小已经被指定,无法动态的扩展.所以在这篇博客中,我换成动态数组来实现.动态数组可以不断开辟内存空间,只是会在数组的初始化时有所不同,其他对数组的操作都是一样的.代码上传至 https://github.com/chenyufeng1991/Queue_DynamicArray . (1)声明变量 static int *queue;//声明数组 static int maxSize;//数组大

C语言实现数组队列

复习C语言数组队列 #include <stdio.h>#include <string.h> #define MAX 1000 typedef struct Queues{ int date[MAX]; int front; int rear;}Queue; Queue queue; void CreatQueue(){ queue.front = queue.rear = 0;}void PushQueue(int value){ if((queue.rear+1)%MAX!=

Java中的自定义数组队列

在Java中,作为所有数据结构中存储和获取速度最快的一种,数组凭借其这种简单易用的优势在各个方面都能大显神威.但是数组也有自身的局限性.数组的长度必须是固定的一旦定义之后就无法动态的更改,这就会造成这样的问题,如果数组已满,就无法继续添加数据(当然你可以定义一个"足够大的数组",但问题是多大才是足够大呢?太小不够,太大浪费内存空间).如果删除一个数据,它的内存空间空着没有被使用.另外数组只能存储同一类型的数据,如果把它设置成Object类型的话,是可以存不同类型的数据了,但是设想这样一

队列——数组实现

引言: 队列的实现除了链表外,也可用数组实现. 分析描述: 队列的结构: typedef int ElementType; typedef struct QueueRecord{ int Capacity; int Front; int Rear; int Size; ElementType *Array; }QueueRecord, *Queue; 创建队列: void MakeEmpty(Queue Q) { Q->Size = 0; Q->Front = 1; Q->Rear =

数据结构实践——队列数组

本文是针对数据结构基础系列网络课程(3):栈和队列的实践项目. [项目 - 队列数组] 创建10个队列,分别编号为0-9(处理为队列数组,编号即下标).输入若干个正整数,以数字0作为结束.设输入的值为x,其个位数字的大小为i,则将x插入到编号为i的队列中.最后输出所有的非空队列. 要求将队列处理成链式队列,使用链式队列算法库中定义的数据类型及算法,程序中只包括一个函数(main函数),入队和出队等操作直接在main函数中调用即可. 设程序运行时输入:70 59 90 72 67 88 80 64

JAVA之数组队列

package xxj.datastructure0810; import java.util.Random; public class DataStructure { /** * @param args */ public static void main(String[] args) { String [] array = {"1","2","3"}; MyArrayList<String> mal = new MyArrayLi

简单的栈和队列

1 /* 2 入门之栈(Stack)和队列(Queue) 3 在C++中STL中预置了<stack>和<queue> 4 简单介绍栈和队列的思想和使用方法 5 栈:先入后出(LIFO),可以理解为将球放进一个一段封闭的管子,只能从入口区出,先进的球只能最后出来 6 队列:先入先出(FIFO),可以理解为将球放进不封闭的管子,球从另一端出来,先进的球先出 7 常见应用:栈可以用于深搜(DFS),队列可以用于宽搜(BFS) 8 只有看看例子就可以很好的理解栈和队列了,简单的先介绍这些

JAVA实现数组队列,循环数组队列,链式队列

/** * 文件名:QueueText.java * 时间:2014年10月22日下午9:05:13 * 作者:修维康 */ package chapter3; /** * 类名:ArrayQueue * 说明:队列的数组实现 */ class ArrayQueue<AnyType>{ private static final int DEFAULT_CAPACITY = 10; private int front;//队头 private int rear;//队尾 private int