cqueue.c
来自「该文件夹中包含了大部分经典的算法的源程序代码」· C语言 代码 · 共 92 行
C
92 行
/* 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 + =
减小字号Ctrl + -
显示快捷键?