看完复仇看了看队列。花了半小时来编写、调试。写完博客再去温习下枪火
/*
** File name: SeqQueue.h
** Author: ZhouFeng
** Date: 2012/03/27
*/
#ifndef SEQ_QUEUE_H
#define SEQ_QUEUE_H
#define BOOL int
#define ERROR 0
#define SUCCESS 1
#define TRUE 1
#define FALSE 0
#define MAX_SIZE 100
typedef int EleType;
typedef struct SeqQueue
{
EleType _seqQueue[MAX_SIZE];
/* End of queue */
int nRear;
/* Front of queue */
int nFront;
/* Counter number of element */
int nCount;
}SeqQueue;
/* Operation */
void InitSeqQueue(SeqQueue *Q);
int SeqQueueAppend(SeqQueue *Q, EleType data);
int SeqQueueDelete(SeqQueue *Q, EleType *data);
BOOL IsQueueEmpty(SeqQueue *Q);
int GetQueue(SeqQueue *Q, EleType *data);
#endif
/*
** File name: SeqQueue.c
** Author: ZhouFeng
** Date: 2012/03/27
*/
#include <stdlib.h>
#include <stddef.h>
#include "SeqQueue.h"
void InitSeqQueue(SeqQueue *Q)
{
/* Deal Q is NULL pointer. */
if(Q == NULL)
{
return;
}
Q->nRear = 0;
Q->nFront = 0;
Q->nCount = 0;
}
int SeqQueueAppend(SeqQueue *Q, EleType data)
{
if(Q == NULL)
{
return ERROR;
}
/* Deal Q is full. */
if(Q->nCount > 0 && Q->nFront == Q->nRear)
{
return ERROR;
}
/* Insert at the end of Queue */
Q->_seqQueue[Q->nRear] = data;
++(Q->nRear);
Q->nRear %= MAX_SIZE;
++(Q->nCount);
return SUCCESS;
}
int SeqQueueDelete(SeqQueue *Q, EleType *data)
{
if(Q == NULL)
{
return ERROR;
}
/* Deal with Q is empty. */
if(Q->nCount == 0)
{
return ERROR;
}
*data = Q->_seqQueue[Q->nFront];
Q->nFront += 1;
Q->nFront %= MAX_SIZE;
--(Q->nCount);
return SUCCESS;
}
BOOL IsQueueEmpty(SeqQueue *Q)
{
if(Q == NULL)
{
return FALSE;
}
if(Q->nCount == 0)
{
return TRUE;
}
else
{
return FALSE;
}
}
int GetQueue(SeqQueue *Q, EleType *data)
{
if(Q == NULL)
{
return ERROR;
}
if(Q->nCount == 0)
{
return FALSE;
}
*data = Q->_seqQueue[Q->nFront];
return SUCCESS;
}
/* End ~SeqQueue.c*/
分享到:
相关推荐
循环队列源代码 循环队列是一种数据结构,它通过一个数组或链表来存储元素,并提供了队列操作的接口。队列是一种先进先出的数据结构,元素的添加和删除都是从队头和队尾进行的。在本资源中,我们将探讨循环队列的...
在Java编程语言中,我们可以创建一个名为`SeqQueue`的类来表示顺序队列。这个类通常包含以下几个重要属性: 1. `queueElem`:这是一个Object类型的数组,用于存储队列中的元素。 2. `front`:一个整型变量,表示队...
顺序队列是一种线性数据结构,它按照元素在内存中的存储方式来划分,所有元素在内存中连续存放,类似于数组。这种数据结构在处理大量数据时具有高效的特点,因为访问和操作元素通常只需要一个地址计算。本文将详细...
// 初始化顺序循环队列 if(queueEmpty(L))// 判断空队列 cout当前队列空! "; else cout当前队列非空! "; cout请输入入队元素的最大元素x="; cin>>x; if(x) { while(x!=0) { enQueue(&L, x);//循环入队...
顺序队列是一种线性数据结构,它按照元素的顺序存储,并通过两端的操作进行插入和删除。在C语言中实现顺序队列,我们通常使用数组作为底层数据容器。在这个"顺序队列C实现优化"中,重点是提高了空间效率,使得其空间...
循环队列是计算机科学中数据结构的一种,它在顺序存储结构上实现,具有队列的先进先出(FIFO)特性。在循环队列中,队尾指针会在达到数组界限后回到数组的起始位置,形成一种循环的效果,从而避免了普通队列在满时...
文件中定义了一个名为`SeqQueue`的顺序队列结构体,用于实现循环队列。通过两个指针`front`和`rear`表示队列的头部和尾部,并提供了队列的基本操作框架。 ### 四、综合运用案例分析 文件中还展示了如何创建时间...
* `int QueueEmpty(SeqQueue Q)`: 判断队列是否为空。 三、栈和队列的应用 栈和队列在实际问题中的应用非常广泛,例如: * 判断回文:使用栈可以判断一个字符串是否为回文。 * 模拟队列的管理:使用队列可以模拟...
首先,循环队列的结构定义为`seqqueue`,包含一个整型数组`data`用于存储队列元素,以及两个整型变量`front`和`rear`分别表示队首和队尾的索引。由于采用了循环结构,队列满和队列空的情况需要特殊处理。队列满的...
在这个例子中,通过定义`SeqQueue`结构体来表示循环队列,并实现了初始化、判断队空、判断队满、入队、出队和统计队列元素数量等基本操作。 ##### 1. 初始化队列 `InitQueue` ```c SeqQueue*InitQueue()//置空队 { ...
顺序队列 (SeqQueue.h) 顺序队列是通过顺序表实现的队列数据结构,遵循先进先出的原则。 **重要成员函数:** - **Enqueue()**: 入队操作。 - **Dequeue()**: 出队操作。 - **IsEmpty()**: 判断队列是否为空。 - ...
在顺序存储结构中,队列通常使用数组实现,称为循环队列。循环队列克服了普通数组作为队列时可能出现的“假溢出”问题。通过取模运算符%,可以使得队列的头尾在数组中形成一个循环,即使队列满时,最后一个元素的下...
循环队列是一种特殊的顺序队列,它使用数组来存储队列元素,并且使用头指针和尾指针来标记队列的头部和尾部。循环队列的表示可以使用结构体来实现,如下所示: ```c typedef struct { DataType data[Maxsize]; /* ...
- **顺序队列(SeqQueue.h)** - 顺序队列同样基于顺序表实现,支持先进先出(FIFO)的操作。 - 主要操作包括入队(enqueue)和出队(dequeue)。 - **链式队列(LinkQueue.h)** - 链式队列基于链表实现,每个...
// 定义顺序队列结构体 typedef struct { QueueElemType element[MAXSIZE]; int front; int rear; } SeqQueue; // 初始化队列 void InitQueue(SeqQueue* Q) { Q->front = Q->rear = 0; } // 入队操作 int ...
- **定义与特性:** 顺序队列是一种基于顺序表实现的队列,遵循先进先出(FIFO)的原则。 - **基本操作:** - 创建队列:初始化一个空队列。 - 入队:向队尾添加一个元素。 - 出队:从队头移除一个元素。 - 查看队...
- 循环链表(CircularList):其特点是尾节点的下一个节点指针指向头节点,形成一个环形结构,便于实现循环队列等数据结构。 - 顺序栈(SeqStack):基于顺序表实现的后进先出(LIFO)的存储结构,用于实现函数调用和...
`SeqQueue`是一个基于数组实现的顺序队列。它包含了一些基本的操作方法: - `EnQueue`: 向队列末尾添加一个元素。 - `DeQueue`: 从队列头部移除一个元素。 - `getFront`: 获取队列头部元素的值。 - `IsEmpty`: 判断...
根据给定的信息,本文将对C++中实现的数据结构及算法进行详细解析,涉及的知识点包括:顺序表、单链表、双向链表、循环链表、顺序栈、链式栈、顺序队列、链式队列、优先级队列、串、二叉树、线索二叉树、堆、哈夫曼...