⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cqueue.c

📁 该文件夹中包含了大部分经典的算法的源程序代码
💻 C
字号:
/* file name: cqueue.c                    */
/* 使用循环队列处理数据--新增、删除、输出 */
#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(void)
{
	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");
		printf(" Please enter your choice...");
		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\n Please enter item to insert: ");
		gets(item[rear]);
		if(front == rear) tag = 1;
	}
}

void dequeue_f(void)
{
	if(front == rear && tag == 0)   /* 当队列中没有数据存在,则显示错误 */
		printf("\n\n No item, queue is empty !\n");
	else
	{
		front = (front + 1) % MAX;
		printf("\n\n Item %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\n No 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) getch();
		}
		printf("  %-20s\n", item[i]);
		printf(" ------------------\n");
		printf("  Total item: %d\n", ++count);
		getch();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -