环形队列数据--新增、删除、输出

本文介绍了环形队列的基本概念,并详细阐述了如何在C++中实现环形队列的数据结构,包括元素的插入、删除以及如何显示队列中的内容。环形队列是一种高效的数据存储和管理方式,适用于需要处理固定容量的先进先出(FIFO)场景。

环形队列数据–新增、删除、输出

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>

#define MAX 20

void enqueue_f(void);           //新增函数
void dequeue_f(void);           //删除函数
void list_f(void);              //输出函数

char item[MAX][20];
int front = MAX - 1, rear = MAX - 1, tag = 0;
//tag为记忆front所在是否已储存数据,0时为没有存放数据,1时为存放数据
void main()
{
    char option;
    while (1)
    {
        printf("\n*****************************************\n");
        printf("            <1>insert(enqueue)\n"             );
        printf("            <2>delete(dequeue)\n"             );
        printf("            <3>list\n"                        );
        printf("            <4>quit\n"                        );
        printf("\n*****************************************\n");
        printf("Please enter your choise..."                  );
        option = _getche();
        switch (option)
        {
        case'1':
            enqueue_f();
            break;
        case'2':
            dequeue_f();
            break;
        case'3':
            list_f();
            break;
        case'4':
            exit(0);
        }
    }
}
void enqueue_f(void)
{
    if (front == rear&&tag == 1)                //当队列已满时,显示错误
        printf("\n\nQueue is full!\n");
    else
    {
        rear = (rear + 1) % MAX;
        printf("\n\nPlease enter item to insert:");
        gets(item[rear]);
        if (front == rear)  tag = 1;
    }
}
void dequeue_f(void)
{
    if (front == rear&&tag == 0)                //当队列中没有数据存在时,显示错误
        printf("\n\nNo item,queue is empty!\n");
    else
    {
        front = (front + 1) % MAX;
        printf("\n\nItem %s deleted\n",item[front]);
        if (front == rear)  tag = 0;
    }
}
void list_f(void)
{
    int count = 0, i;
    if (front == rear&&tag == 0)
        printf("\n\nNo item,queue is empty\n");
    else
    {
        printf("\n\n  ITEM\n");
        printf("-------------------------------------------\n");
        for (i = (front + 1) % MAX; i != rear; i = ++i%MAX)
        {
            printf("   %-20s\n",item[i]);
            count++;
            if (count % 20 == 0)  getchar();
        }
        printf("   %-20s\n",item[i]);
        printf("-------------------------------------------\n");
        printf("  Total item: %d\n",++count);
        getchar();
    }
}

测试1
测试2
测试3
测试4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值