C语言队列的基本实现

本文介绍了队列的原理和特点,包括先进先出(FIFO)的概念,并以C语言展示了队列的简单实现和循环队列的详细过程,包括结构体定义、初始化、入队、出队操作,以及执行结果的展示。

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

1.队列的简介

队列(Queue),简称队,它也是一种运算受限的特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除,故队列又称为先进先出(FIFO)线性表。
对应我们日常生活中的情形,比如,在食堂的单窗口买饭,一个食堂阿姨每次只能给一位同学打饭,那么我们就需要排队买饭,先到的同学排在队伍的前面,后来的同学排在后面。前面的同学先买到饭然后出队离开;后面来的同学原则上只能排到队伍的后面(手动狗头)。这就是先来的先请求得到服务。再比如我们有一台网络共享打印机,网络中的任何一台机器都可以向它发出打印请求。但它每次只能服务一个,该如何处理这些请求呢?这个时候控制打印机的程序就会把请求们加入到一个队列,只要队列中有内容,打印机就会从不断地从队列头部取出请求执行打印。计算机的处理器也是一个共享的资源,很多程序或者说进程需要处理器的时间片来执行,那么这些进程也会被放入一个队列。
在这里插入图片描述
对于栈,插入和删除只能从一端进行;对于队列,插入和删除操作必须从不同端进行。接下来我们用两种方式来实现相关操作。
在这里插入图片描述

2.队列的简单实现

首先创建一个包含整型元素的数组来存储队列。下面是一种极其简单的实现方式。代码:

#include<stdio.h>
#define MAXSIZE 10
int A[MAXSIZE];//定义一个全局整型数组存放队元素
int front = -1;
int rear = -1; //队空时将索引置为-1;
//入队操作
 void Enqueue(int x){
   
 	//队满则不支持入队
	 if(rear ==MAXSIZE-1){
   
	 	printf("Error:Queue is Full ");
	 		return ;
		 }
		 A[++rear] = x;
	 
 }
 //出队操作
 void Dequeue(){
   
 	if((rear ==-1)&& front ==-1){
   
 		printf("Error:Queue is Empty");<
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值