循环顺序队列c语言实现

#include <stdio.h>
#include <stdlib.h>
#define maxsize 100
typedef int ElemType;
typedef struct  {
    ElemType *base;
    int front;
    int rear;
}SqQueue;
int InitQueue(SqQueue& S) {
    S.base = (ElemType*)malloc(maxsize * sizeof(ElemType));
    if (!S.base)return 0;
    S.front = S.rear = 0;
    return 1;

}
int QueueLength(SqQueue Q) {
    return ((Q.rear - Q.front + maxsize) % maxsize);
}
int EnQueue(SqQueue& s, ElemType x) {
    if (s.front == (s.rear+1)%maxsize)return 0;
    s.base[s.rear] = x;
    s.rear = (s.rear + 1) % maxsize;
    return 1;
}
int DeQueue(SqQueue& s, ElemType& x) {
    if (s.front == s.rear)return 0;
    x = s.base[s.front];
    s.front = (s.front + 1) % maxsize;
    return 1;
}
int SqQueneEmpty(SqQueue& s) {
    if (s.front == s.rear)return 1;
    return 0;
}
ElemType GetHead(SqQueue Q) {
    if (Q.front != Q.rear)return Q.base[Q.front];
}

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是 C 语言实现顺序队列的代码示例: ```c #include <stdio.h> #include <stdlib.h> #define MAXSIZE 100 typedef struct { int data[MAXSIZE]; int front; int rear; } SqQueue; // 初始化队列 void InitQueue(SqQueue *q) { q->front = q->rear = 0; } // 判断队列是否为空 int QueueEmpty(SqQueue q) { return q.front == q.rear; } // 入队 int EnQueue(SqQueue *q, int x) { // 判断队列是否已满 if ((q->rear + 1) % MAXSIZE == q->front) { return 0; } q->data[q->rear] = x; q->rear = (q->rear + 1) % MAXSIZE; return 1; } // 出队 int DeQueue(SqQueue *q, int *x) { // 判断队列是否为空 if (q->front == q->rear) { return 0; } *x = q->data[q->front]; q->front = (q->front + 1) % MAXSIZE; return 1; } int main() { SqQueue q; int i, x; // 初始化队列 InitQueue(&q); // 入队 for (i = 1; i <= 10; i++) { EnQueue(&q, i); } // 出队 while (!QueueEmpty(q)) { DeQueue(&q, &x); printf("%d ", x); } printf("\n"); return 0; } ``` 该代码中使用了一个结构体 `SqQueue` 存储队列元素,队列的最大长度为 `MAXSIZE`。该结构体包含一个数组 `data` 用来存储队列元素,以及两个指针 `front` 和 `rear` 分别指向队头和队尾。 `InitQueue` 函数用于初始化队列,将 `front` 和 `rear` 都设置为 0。 `QueueEmpty` 函数用于判断队列是否为空,若队头指针和队尾指针相等,则说明队列为空。 `EnQueue` 函数用于入队,判断队列是否已满后,将元素插入到队尾,然后将队尾指针加 1。 `DeQueue` 函数用于出队,判断队列是否为空后,将队头元素保存到 `x` 中,然后将队头指针加 1。 在 `main` 函数中,我们先初始化队列,然后循环入队,最后循环出队并输出队列元素。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值