队列-顺序表

 1. **队列的结构定义:**
   - `SqQueue` 结构体定义了循环队列,包含一个数组 `data` 用于存储队列元素,以及两个指针 `front` 和 `rear` 分别表示队头和队尾的位置。

2. **初始化队列:**
   - `Queue_Init` 函数用于初始化队列,将队头和队尾指针都置为 0。

3. **判断队列是否为空:**
   - `Queue_IsEmpty` 函数通过判断队头和队尾指针是否相等来判断队列是否为空。

4. **判断队列是否已满:**
   - `Queue_IsFull` 函数通过判断队尾指针是否达到数组的最大索引(`MAX_SIZE - 1`)来判断队列是否已满。

5. **入队操作:**
   - `Queue_En` 函数用于将元素入队,首先检查队列是否已满,然后将元素存储在队尾,更新队尾指针。

6. **出队操作:**
   - `Queue_De` 函数用于将元素出队,首先检查队列是否为空,然后将队头元素取出,更新队头指针。

7. **输出队列中的元素:**
   - `Queue_Print` 函数用于打印队列中的元素,遍历队列数组,从队头到队尾输出元素。

8. **主函数演示:**
   - 主函数演示了初始化队列、入队、出队等操作,并输出相应的结果。

#include <stdio.h>

#define MAX_SIZE 100
typedef int ElemType; // 假设队列中存储的元素类型是整数

typedef struct {
  ElemType data[MAX_SIZE]; // 存储队列元素的数组
  int front, rear; // 队列的队头和队尾指针
} SqQueue;

// 初始化队列
void Queue_Init(SqQueue &Q) {
  Q.front = Q.rear = 0;
}

// 判断队列是否为空
int Queue_IsEmpty(SqQueue &Q) {
  return Q.front == Q.rear;
}

// 判断队列是否已满
int Queue_IsFull(SqQueue &Q) {
  return Q.rear == MAX_SIZE - 1;
}

// 入队操作
int Queue_En(SqQueue &Q, ElemType x) {
  if (Q.rear == MAX_SIZE - 1) {
    printf("队列已满,无法入队\n");
    return 0; // 入队失败
  }
  Q.data[Q.rear] = x;
  Q.rear++; // 队尾指针增加
  return 1; // 入队成功
}

// 出队操作
int Queue_De(SqQueue &Q, ElemType &x) {
  if (Q.front == Q.rear) {
    printf("队列为空,无法出队\n");
    return 0; // 出队失败
  }
  x = Q.data[Q.front];
  Q.front++; // 队头指针增加
  return 1; // 出队成功
}

// 输出队列中的元素
void Queue_Print(SqQueue &Q) {
  int i;
  for (i = Q.front; i < Q.rear; i++) {
    printf("%d ", Q.data[i]);
  }
  printf("\n");
}

int main() {
  SqQueue Q;
  Queue_Init(Q);

  Queue_En(Q, 1);
  Queue_En(Q, 2);
  Queue_En(Q, 3);

  printf("队列元素: ");
  Queue_Print(Q);

  ElemType x;
  Queue_De(Q, &x);
  printf("出队元素:%d\n", x);

  printf("队列元素: ");
  Queue_Print(Q);

  return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值