队列的顺序存储实现

#include <stdio.h>
#include <stdlib.h>
#define ElementType int
const int MAXSIZE = 10;

typedef struct QNode *Queue;
typedef struct QNode{
	ElementType Data[MAXSIZE];
	int rear;
	int front;
};
void InitQueue(Queue &Q){
	Q = (Queue)malloc(sizeof(struct QNode));
	Q->rear = Q->front = 0;
}

bool Is_Empty_Queue(Queue Q){
	return Q->front == Q->rear;
}
bool Is_Full_Queue(Queue Q){
	return ((Q->rear + 1)% MAXSIZE == Q->front);
}
bool AddQ(Queue &Q, ElementType X){
	if(Is_Full_Queue(Q)){
		printf("队列满\n");
		return 0;
	}
	Q->rear =(Q->rear+1) % MAXSIZE;
	Q->Data[Q->rear] = X;
}
ElementType DelQ(Queue &Q){
	if(Is_Empty_Queue(Q)){
		printf("队列为空\n");

	}else{
		Q->front = (Q->front+1)%MAXSIZE;
		return Q->Data[Q->front];
	}
}

int main(){
	Queue Q;
	InitQueue(Q);
	for(int i = 0;i<15;i++)
		AddQ(Q,i);

	for(int i = 0;i< 9;i++)
		printf("%d\n",DelQ(Q));
	return 0;
}

  

时间: 2024-08-05 02:27:03

队列的顺序存储实现的相关文章

模板实现C++队列(顺序存储)

c++模板实现一个队列,包括查 插 删 改,求并集和交集,主要是想研究一下数据结构和算法,然后结合C++ template 实现一下,这个是第一个,这个分类里面的源代码没有追求尽善尽美,如果感觉有的借鉴就去去借鉴,如果感觉写的不好也别拍砖,谢谢…… 模板头文件如下 1 #ifndef SEQUENCELIST_H 2 #define SEQUENCELIST_H 3 4 //template of sequence list 5 //implicit interface of T , opera

队列的顺序存储结构和链式存储结构

队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表(在队尾进行插入操作,在对头进行删除操作). 与栈相反,队列是一种先进先出(First In First Out, FIFO)的线性表. 与栈相同的是,队列也是一种重要的线性结构,实现一个队列同样需要顺序表或链表作为基础. 队列的链式存储结构 队列既可以用链表实现,也可以用顺序表实现.跟栈相反的是,栈一般我们用顺序表来实现,而队列我们常用链表来实现,简称为链队列. typedef struct QNode { ElemT

循环队列的顺序存储和入队出队操作

今天看图的广度优先遍历的时候,发现用到了循环队列,补一下循环队列的知识,参考<大话数据结构>的P116~117,自己写了一个简单的测试例子便于理解. 首先需要理解以下三条公式. front是队头元素的下标,rear是队尾元素后一位的下标.(书上用头指针和尾指针,front和rear并不是指针,个人觉得不太好) 1.队列空的条件 显然front==rear 注意:如果队列不保留任何元素空间 满足front==rear的情况下,可能是队列空,也可能是队列满.所以为了方便,本文讨论的是采用保留一个元

队列(顺序存储结构)

队列:具有一定操作约束的线性表,只能在一端作插入.删除,与堆栈类似 具有先入先出的特性(First In First Out) 同理,分顺序存储结构.链式存储结构两种形式 队列(顺序存储结构) 通常由一个一维数组和一个队列头元素变量front和一个队列尾元素变量rear组成 加入一个元素rear加1,删除一个元素front加1 空的时候front=rear,但是填满时front/rear也相等,这时便不利于区分:为此通常采用加1求余的方式,同时构成循环队列 1)判断是否为空:front == r

数据结构:队列的顺序存储结构【转】

本文转载自:http://blog.csdn.net/jnu_simba/article/details/8841657 队列(Queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表.是一种先进先出的线性表(FIFO).允许插入的一端称为队尾,允许删除的一端称为队头.我们在<栈的顺序存储结构>中发现,栈操作的top指针在Push时增大而在Pop时减小,栈空间是可以重复利用的,而队列的front.rear指针都在一直增大,虽然前面的元素已经出队了,但它所占的存储空间却不能重复利用

队列的顺序存储结构

还是直接上代码 package com.sbtufss.test; import java.util.Arrays; /** * 所谓的顺序存储结构,实际上就是用数组来存储队列的元素 * @author sbtufss * */ public class ArrayQueue<T> { private int tLenght=3;//数组的大小,或者每次增加的大小 //初始化能存放tLenght个元素的数组 private Object[] t=new Object[tLenght]; pri

数据结构-队列的顺序存储(循环队列)

1 #include "stdio.h" 2 #include "stdlib.h" 3 4 #define OK 1 5 #define ERROR 0 6 #define OVERFLOW -1 7 #define MAXQSIZE 100 8 typedef int QElemType; 9 typedef int Status; 10 11 typedef struct 12 { 13 QElemType *base; 14 int front; 15 in

数据结构 - 队列静态顺序存储结构

队列的基本概念 1 队列的基本概念 队列(Queue):也是运算受限的线性表.是一种先进先出(First In First Out ,简称FIFO)的线性表.只允许在表的一端进行插入,而在另一端进行删除. 队首(front) :允许进行删除的一端称为队首. 队尾(rear) :允许进行插入的一端称为队尾. 例如:排队购物.操作系统中的作业排队.先进入队列的成员总是先离开队列. 队列中没有元素时称为空队列.在空队列中依次加入元素a1, a2, -, an之后,a1是队首元素,an是队尾元素.显然退

数据结构之---C语言实现队列的顺序存储

//C语言串的顺序存储表示 //串的堆分配存储表示 //杨鑫 #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAXSTRLEN 255 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 //定义数据元素结的构 typedef int

Java数据结构系列之——队列(1):队列的顺序存储结构及其实现

package queue.sequencequeue; /** * 队列的定义:队列是只允许在一端进行插入操作,而在另外一端进行删除操作的线性表 * 队列是一种先进先出(First In First Out)的线性表,简称FIFO,允许插 * 入的一端称为队尾,允许删除的一端称为队头 * @author wl * */ public class SequenceQueue { private Object[] elementData;//用数组来保存队列的元素 private int fron