首页 > 其他分享 >队列的基本操作

队列的基本操作

时间:2024-04-11 12:05:16浏览次数:12  
标签:return 队列 sqQueue int maxsize front 基本操作 rear


(一)结构体定义一个顺序队列

typedef struct 
{char data[maxsize];
int rear ,front;
	
}sqQueue;

(二)队列的初始化

头尾两个指针指向0

void  InitQueue(sqQueue *s)
{
	(*s).rear=(*s).front=0;
}

(三)进队操作

  注意循环队列的使用

int EnQueue(sqQueue *Q,char x)//入队 
{
	if(((*Q).rear+1)%maxsize==(*Q).front)
	return 0;
	(*Q).data[(*Q).rear]=x;
	(*Q).rear=((*Q).rear+1)%maxsize;
	return 1;
}

(四)出队操作

int DeQueue(sqQueue*Q,char*x)//出队  
{if((*Q).rear==(*Q).front)
return 0;
 else 
 *x=(*Q).data[(*Q).front];
 (*Q).front=((*Q).front-1)%maxsize;
	
}

(五)队列中元素的遍历

int DeQueue(sqQueue*Q,char*x)//出队  
{if((*Q).rear==(*Q).front)
return 0;
 else 
 *x=(*Q).data[(*Q).front];
 (*Q).front=((*Q).front-1)%maxsize;
	
}

(六)具体实现

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define maxsize 100 
typedef struct 
{char data[maxsize];
int rear ,front;
	
}sqQueue;
void  InitQueue(sqQueue *s)
{
	(*s).rear=(*s).front=0;
}
int EnQueue(sqQueue *Q,char x)//入队 
{
	if(((*Q).rear+1)%maxsize==(*Q).front)
	return 0;
	(*Q).data[(*Q).rear]=x;
	(*Q).rear=((*Q).rear+1)%maxsize;
	return 1;
}
int DeQueue(sqQueue*Q,char*x)//出队  
{if((*Q).rear==(*Q).front)
return 0;
 else 
 *x=(*Q).data[(*Q).front];
 (*Q).front=((*Q).front-1)%maxsize;
	
}
void printQueue(sqQueue Q)
{if(Q.front ==Q.data )
 return ;
 else 
 {int i=0;
 int a=(Q.rear -Q.front +maxsize)%maxsize ;
 for(i=0;i<a;i++)
 {printf("%c",Q.data[i]);
 }
 	
 }
	
} 


int main(int argc, char *argv[]) {
	sqQueue Q;
	InitQueue(&Q);
	char str[100];
	gets(str);
	int i, a=strlen(str);
	for(i=0;i<a;i++)
	{EnQueue( &Q,str[i]);
	}
	printQueue(Q);
	return 0;
}

标签:return,队列,sqQueue,int,maxsize,front,基本操作,rear
From: https://blog.csdn.net/jgrttg/article/details/137633339

相关文章

  • 数据结构之队列(java语言版)
    队列(Queue):在逻辑上是一种线性存储结构。它有以下几个特点:1、队列中数据是按照"先进先出(FIFO,First-In-First-Out)"方式进出队列的。2、队列只允许在"队首"进行删除操作,而在"队尾"进行插入操作。队列通常包括的两种操作:入队列和出队列。队列的种类也很多,单向队列,双向队列,循......
  • 数据结构之队列(c语言版)
    队列(Queue):在逻辑上是一种线性存储结构。它有以下几个特点:1、队列中数据是按照"先进先出(FIFO,First-In-First-Out)"方式进出队列的。2、队列只允许在"队首"进行删除操作,而在"队尾"进行插入操作。队列通常包括的两种操作:入队列和出队列。队列的种类也很多,单向队列,双向队列,循......
  • 双端队列
    这里对做法补充一下首先肯定有两个考虑对象嘛,考虑双端队列或者考虑数值,既然双端队列是不好考虑的(指正着想),那就考虑数值喽(反着想,最终的序列一定是确定的)然后是一个证明,其实我自己的排序方法是一个数一个数看的,对于当前循环到的数,比如处于递减状态,我们考虑这个数所有的下标,把能接......
  • 2849: 【广度优先】【优先队列】游戏装备
     题目描述小未在玩一款武侠游戏,游戏里PK不仅要有高超的操作和智慧,还要有很牛的装备。现在他进入了一个副本,副本里面有极品15星的装备宝箱,但是从副本入口到宝箱有很多条路,当然不可能轻轻松松的拿到极品装备。一路上会随机刷出各种攻击力很强的怪物。它会攻击小未的角色,当然也......
  • r语言基本操作1——r语言基本操作
    r语言作为一种常用于数据处理领域语言,较为广泛使用的是其对数据进行操作的功能,基础包括变量赋值、数据类型、数据导出和导入等,更深层次还包括统计相关函数、库函数调用、数据整合整理等,在r语言中也有很多第三方包,类似于python的库函数,在特定情况下可以被调用并完成特定操作......
  • 进程间通信(队列和生产者消费者模型)
    进程间通信(队列和生产者消费者模型)一、关于进程间通信[1]什么是进程间通信(Inter-ProcessCommunication,IPC)进程间通信(Inter-ProcessCommunication,IPC)是指两个或多个进程之间进行信息交换的过程。它是一种计算机编程技术,用于在不同进程之间共享数据和资源。[2]如何实......
  • 数据结构----栈和队列详细操作完整代码(C语言)
    栈和队列是两种常用的,重要的数据结构栈和队列是限定插入和删除只能在表的“端点”进行的线性表栈和队列是线性表的子集(是插入和删除位置受限的线性表)栈定义:只能在表的一端(栈顶)进行插入和删除运算的线性表逻辑结构:与线性表相同,仍为一对一关系存储结构:用顺序栈或链栈存......
  • 优先队列的基本实现【数据结构与算法—TypeScript 实现】
    笔记整理自coderwhy『TypeScript高阶数据结构与算法』课程特性效率比普通队列高每个出队元素拥有最高优先级可以用数组、链表等数据结构实现,但是堆结构是最常用的实现方式设计实现方式:基于堆结构实现,堆结构底层基于数组实现属性:heap:存放队列元素方法:enq......
  • 队列-单端队列
    队列和栈非常类似,栈的一端是封闭的,类似一口深井,遵循先进后出原则FILO.队列则两端是放开的,抽象于现实世界的排队现象,遵循先进先出原则FIFO.队列在尾部进行元素的新增,称为"入队",然后从头部移除元素,成为"出队".生活中我们去坐火车进站检票,去某个机关办理......
  • Kafka、ActiveMQ、RabbitMQ、RocketMQ四大消息队列优劣对比与选择指南
    在分布式系统架构中,消息队列(MessageQueue,MQ)扮演着至关重要的角色,它作为异步通信的核心组件,能够实现系统解耦、削峰填谷、数据缓冲等功能。本文将聚焦于四大主流消息队列——Kafka、ActiveMQ、RabbitMQ、RocketMQ,深度剖析它们各自的优缺点,并在最后提供一份详尽的选择指南,以助......