117.info
人生若只如初见

c语言基于数组怎么实现队列

基于数组实现队列可以使用两个指针front和rear来分别指向队列的头部和尾部。以下是一种使用数组实现队列的示例代码:

#include 
#define MAX_SIZE 100

typedef struct {
    int data[MAX_SIZE];
    int front;
    int rear;
} Queue;

void initQueue(Queue *q) {
    q->front = -1;
    q->rear = -1;
}

int isEmpty(Queue *q) {
    return (q->front == -1 && q->rear == -1);
}

int isFull(Queue *q) {
    return (q->rear + 1) % MAX_SIZE == q->front;
}

void enqueue(Queue *q, int value) {
    if (isFull(q)) {
        printf("Queue is full\n");
        return;
    }
    if (isEmpty(q)) {
        q->front = 0;
        q->rear = 0;
    } else {
        q->rear = (q->rear + 1) % MAX_SIZE;
    }
    q->data[q->rear] = value;
}

void dequeue(Queue *q) {
    if (isEmpty(q)) {
        printf("Queue is empty\n");
        return;
    }
    if (q->front == q->rear) {
        q->front = -1;
        q->rear = -1;
    } else {
        q->front = (q->front + 1) % MAX_SIZE;
    }
}

int front(Queue *q) {
    if (isEmpty(q)) {
        printf("Queue is empty\n");
        return -1;
    }
    return q->data[q->front];
}

int main() {
    Queue q;
    initQueue(&q);

    enqueue(&q, 5);
    enqueue(&q, 10);
    enqueue(&q, 15);

    printf("Front element: %d\n", front(&q));
    dequeue(&q);
    printf("Front element: %d\n", front(&q));

    return 0;
}

在这个示例代码中,我们定义了一个Queue结构体来保存队列的数据和两个指针。initQueue函数用于初始化队列,isEmpty和isFull函数分别用于判断队列是否为空和是否已满。enqueue函数用于将元素入队,dequeue函数用于将队头元素出队,front函数用于获取队头元素的值。

在main函数中,我们首先初始化了队列,然后通过enqueue函数将3个元素入队。接着使用front函数获取队头元素的值,并通过dequeue函数将队头元素出队。最后再次使用front函数获取队头元素的值。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe6f8AzsLAw9QDVU.html

推荐文章

  • c语言中default的用法是什么

    在C语言中,default是switch语句中的一个可选分支,用于处理未匹配到任何case的情况。default分支通常被放在switch语句的最后,表示当没有任何case匹配的时候执行...

  • c语言无限循环语句怎么写

    C语言中,我们可以使用while循环或者for循环来实现无限循环。 使用while循环: while(1) { // 循环体代码
    } 使用for循环: for(;;) { // 循环体代码
    }...

  • c语言loop循环的用法是什么

    C语言中的循环语句用于重复执行一段代码,直到满足某个条件才停止循环。常见的循环语句有以下几种: while循环:在循环开始前先判断条件是否满足,满足则执行循环...

  • c语言链表修改信息如何修改

    要修改链表中的某个节点的信息,可以按照以下步骤进行操作: 遍历链表,找到要修改的节点。 修改节点的信息。 具体代码示例如下:
    #include #include // 定...

  • win8虚拟机安装的方法是什么

    要在Win8上安装虚拟机,您可以按照以下步骤操作: 下载和安装虚拟机软件:您可以选择使用虚拟机软件,如VMware Workstation、VirtualBox等。前往官方网站下载并安...

  • win7怎么关闭不必要的进程

    要关闭不必要的进程,您可以按照以下步骤进行操作: 打开任务管理器:按下Ctrl + Shift + Esc键组合,或者右击任务栏并选择“任务管理器”来打开任务管理器。 切...

  • linux中的source命令怎么使用

    在Linux中,source命令用于在当前shell环境中执行指定脚本文件中的命令。它的语法如下:
    source 或者
    . 其中,是需要执行的脚本文件的路径和名称。

  • Linux中einprogress错误怎么解决

    "einprogress"错误是在Linux系统中遇到的一种错误类型,通常与网络编程相关。当使用非阻塞socket进行网络操作时,如果操作仍在进行中,则可能会返回此错误。要解...