C/C++语言顺序队列:循环队列(插入,删除,遍历)

本文详细介绍了一种数据结构——循环队列的实现方法,并通过C语言提供了完整的源代码示例。文章首先解释了循环队列的基本概念,即通过将数组视为首尾相连的方式形成循环队列,然后介绍了队列的插入、删除和搜索元素的操作。

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

         循环队列

把数组看作首尾相连 —— 形成循环队列

front 指向队头;rear 指向队尾的下一个位置

源代码:

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define ElemType int
#pragma warning( disable : 4996)
typedef  struct
{
    ElemType *data;            // 指向data的指针
    int  front, rear, len,size; 
    int  seek;//用于搜索队列元素
} SeqQueue, *pSeqQueue;
void  SeqQueueCreate(pSeqQueue que, ElemType n)//初始化栈
{

    que->data = (ElemType *)malloc(n+1);//动态分配
    if (que->data == NULL){ printf("分配内存失败"); }
    que->front = que->rear = 0;//栈空
    que->len = 0;
    que->size = n+1;
    que->seek = 0;
}
void SeqQueueIn(pSeqQueue que, ElemType x)//插入元素
{
    
    if (que->len <que->size - 1)
    {
        que->data[que->rear] = x;
        printf("队列总共可存储元素个数:%d\n当前队列元素个数:%d\n已经存储元素: %d\n", que->size, que->len, que->data[que->rear]);
        que->rear = (que->rear ++) % que->size;
        que->len++;
    }
    else
    {
        printf("栈满\n");
    }
    

    
}
void SeqQueueOut(pSeqQueue que)//删除元素
{
    while (que->front < que->rear)
    {
        printf("出队元素为:%d\n",que->data[que->front]);
        que->front = (que->front++) % que->size;
    }
}
void SeekQueueOut(pSeqQueue que, ElemType m)//搜索元素
{
    
    while (que->seek < que->rear)
    {
        if(que->data[que->seek]==m)
        {
        
           printf("成功找到元素为:%d\n", que->data[que->seek]);
           break;
           
        }
        else
        {
            que->seek++;
        }
            
    }


}
SeqQueue ss;
int m,n;
int main()
{
    printf("请输入入队元素个数:\n");
    scanf("%d", &n);
    SeqQueueCreate(&ss, n);
    for (int i = 1; i <n+2; i++)
    {
        printf("请输入第 %d 个元素:\n",i);
        scanf("%d",&m);
        SeqQueueIn(&ss,m);
    }
    SeekQueueOut(&ss, 2);
    SeqQueueOut(&ss);
    system("pause");
    return 0;

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值