数组对列,只要是先进先出的就是队列

该博客介绍了如何使用C语言实现一个固定大小的队列结构。定义了队列的数据结构,包括队列内存、队头和队尾位置。通过`lpQueue()`函数创建队列,`push()`函数进行入队操作,`pop()`函数执行出队并返回队头元素,`empty()`函数检查队列是否为空。博客提供了一个示例,展示了如何填充队列并逐个弹出元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<stdio.h>
#include<stdlib.h>
#define   MAX   10/*用数组去存储对列,所以必定有个大小限制,数组无法自动扩增*/
struct   queue
{
      int   *queueMemory;   /*队列容量容量-->数组*/
      int   frontPos;/*队头元素下标*/
      int   tailPos;   /*队尾元素下标*/
}struct   queue* lpQueue()
{
     struct    queue* lpQueue = (struct   queue*)malloc(sizeof(struct   queue));
     //表述最初的状态
     lpQueue->queueMemory = (int*)malloc(sizeof(int)*MAX);/*指针分配内存变成数组*/
     lpQueue->frontPos = lpQueue->tailPos = -1;
     return   lpQueue;
}

/*入队操作:队尾往后移动*/
void   push(struct   queue* lpQueue, int   data)
{
      /*用数组时一定要判断是否满了的问题*/
      if(lpQueue->tailPos == MAX-1)  /*数组下标等于长度-1*/
      {
             printf("队满无法入队!\n");
             return;
       }
       lpQueue->tailPos ++;
       lpQueue->queueMemory[lpQueue->tailPos] = data;/*数组录入数据*/
}

/*入队,操作队尾;出队,操作对头*/

/*出队和获取队头元素合在一起*/
int   pop(struct   queue* lpQueue)
{
      if(lpQueue->frontPos == lpQueue->tailPos)
      {
             printf("队为NULL,无法出队!\n");
             return   -1;
       }
       return   lpQueue->queueMemory[++lpQueue->frontPos];
}

int   empty(struct    queue* lpQueue)
{
    return  lpQueue->frontPos != lpQueue->tailPos;
}

int   main()
{
     struct   queue* lpQueue = createQueue();
     for(int   i = 0; i<10;i++)
     {
           push(lpQueue, i);
      }
      while(empty(lpQueue))
      {
               printf("%d\t",pop(lpQueue));
       }

      system("pause");
      return   0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值