大话数据结构——队列顺序存储结构

#include<iostream>
using namespace std;

#define OK 1
#define TRUE 1
#define FALSE 0
#define ERROR 0

#define MAXSIZE 10
typedef int status;//返回的状态值
typedef int elemtype;//数据的类型

//数据结构
typedef struct queue_list
{
	elemtype data[MAXSIZE];//队列里的元素
	int rear;//尾的元素的坐标
	int front;//头的元素的坐标
}queue_list;

//初始化一个空的队列
status init_quelist(queue_list *L)
{
	L->front=0;
	L->rear=0;
	return OK;
}

//求队列的长度
int length_quelist(queue_list L)
{
	return (L.rear-L.front+MAXSIZE)%MAXSIZE;//计算队列的长度
}

//循环队列的入队列操作
status In_quelist(queue_list *L,elemtype e)
{
	if((L->rear+1)%MAXSIZE==L->front)
		return ERROR;
	L->data[L->rear]=e;
	L->rear=(L->rear+1)%MAXSIZE;//若本来rear在数组的最后,再移一位则转到了数组最前
	return OK;
}

//循环队列的出队操作
status ou_quelist(queue_list *L,elemtype &e)
{
	if(L->front==L->rear)
		return ERROR;
	e=L->data[L->front];//若本来front在数组的最后,再移一位则转到了数组最前
	L->front+=1;
	return OK;
}

int main()
{

	system("pause");
	return 1;

}

  

时间: 2024-10-16 00:04:41

大话数据结构——队列顺序存储结构的相关文章

数据结构之队列——顺序存储结构(php代码实现——方法一)

<?php /**  * 第一种--非循环顺序队列的实现方法  * 队列的头元素在为数组的下标为0的元素  * 这种方法的优缺点:  *  优点:头元素始终在下标为 0 的第一个元素,因此不需要设置头指针  *  缺点:元素出队是会移动大量元素,时间复杂度为O(n),效率比较低  *  */ class SqQueue{     private $SqArr;//队列存储数组     private $rear;//若队列不为空,则指向队尾元素的后一个位置     public function

大话数据结构01-数据结构序论

1.开场白 数据结构 是 相互之间存在一种或多种特定关系的数据元素的集合. 如下图: 原文地址:https://www.cnblogs.com/rango0550/p/12055779.html

队列顺序存储(循环队列)

/* * 2015年4月17日 09:07:17 * 目的:实现循环队列(顺序存储结构),本来我想要在实现循环队列之前 * 先实现队列的顺序存储,但是这种算法有很大的缺点 * 首先会造成假溢出现象 */ /* * 解决队列的相关问题,就是怎么判断队列是否满了或者空了 * 第一种方法: * 我们在队满和对空时都是real = front;这样就不够具体,容易出错 * 所以我们采取牺牲一个存储单元,这样对空时,判断是:real == front * 队满的操作是:(real+1)%maxSize =

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

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

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

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

大话数据结构---顺序存储结构的线性表

线性表的定义:零个或多个数据元素的有限序列. 定义的解读: 首先是由一组数据元素组成,可以基本数据类型,也可以使自定义的类型, 有限的个数,当然可以是0个,也就是空表呗, 还有一个特点就是有序 这么一看线性表抽象出来就和生活中的排队一样,一群小朋友站成一队,每个人都知道自己站在第几个,自己的前面是谁,后面谁,除了排头排位的两个数据,每个数据都有唯一的前驱和后继. 线性表的分类 今天先学习一下顺序存储结构,顺序存储结构指的就是用一段地址连续的存储单元依次存储线性表的数据元素: 这么一看线性表挺像数

[大话数据结构]线性表之单链表结构和顺序存储结构

线性表定义: 零个或者多个数据元素的有限序列.元素之间是有顺序的,如果元素存在多个,则第一个元素无前驱,最后一个元素无后继.其他每个元素都有且只有一个前驱和后继.并且数据元素的类型要相同. 线性表的抽象数据类型: ADT 线性表(List) Data 线性表的数据对象集合为{a1,a2,...,an},每个元素的类型均为DataType. 其中,除第一个元素a1外,每一个元素有且只有一个直接前驱元素,除了最后一个元素an外,每一个元素有且只有一个直接后继元素. 数据元素之间的关系是一对一的关系.

大话数据结构(五)(java程序)——顺序存储结构的插入与删除

获得元素操作 对于线性表的顺序存储结构来说,我们要实现getElement操作,即将线性表的第i个位置元素返回即可 插入操作 插入算法思路: 1.如果插入位置不合理,抛出异常 2.如果插入表的长度大于等于数组长度,则抛出异常或动态增容 3.从最后一位元素开始向前遍历到第i个位置,分别把它们都向后移动一个位置 4.将要插入元素填入位置i处 5.表长度加1 删除操作 1.如果删除位置不合理,抛出异常 2.取出插入元素 3.从删除元素位置开始遍历到最后一个元素位置,分别将它们都向前移动一位 4.表长度

《大话数据结构》笔记(2)--线性表的顺序存储结构

线性存储结构的Java实现代码: https://github.com/Lyu0709/data-structure/tree/master/src/com/coding/basic/array 第三章 线性表 定义 数学语言 若将线性表记为(a1, ..., ai-1, ai, ai+1, ..., an),则表中ai-1领先于ai,ai领先于ai+1,称ai-1是ai的直接前驱元素,ai+1是ai的直接后继元素.当i=1,2,..,n-1时,ai有且仅有一个直接后继,当n=2,3,...,n