SeqQueue.h

#define QueueSize 100
typedef char DataType; class SeqQueue
{
public:
DataType data[QueueSize];
int front;
int rear; void Initial();
bool IsEmpty();
bool IsFull();
void EnQueue(DataType temp);
DataType DeQueue();
DataType Front();
};
SeqQueue.cpp
#include "SeqQueue.h"
#include <iostream>
using namespace std; void SeqQueue::Initial()
{
rear = front = 0;
} bool SeqQueue::IsEmpty()
{
return rear == front;
} bool SeqQueue::IsFull()
{
return rear - front == QueueSize - 1;
} void SeqQueue::EnQueue(DataType temp)
{
if(IsFull())
cout<< "队??列?D已??满??" <<endl;
else
{
data[rear] = temp;
rear++;
}
}
DataType SeqQueue::DeQueue()
{
if(IsEmpty())
{
cout<< "队??列?D为a空?" <<endl;
}
else
{
DataType temp;
temp = data[front];
front++;
return temp;
}
}
DataType SeqQueue::Front()
{
if(IsEmpty())
{
cout<< "队??列?D为a空?" <<endl;
}
else
{
DataType temp;
temp = data[front];
return temp;
}
}

  

 LinkQueue.h
typedef char DataType;
typedef struct node
{
DataType data;
node* next;
}Node;
class LinkQueue
{
public:
Node* front;
Node* rear; void Initial();
bool IsEmpty();
void EnQueue(DataType temp);
DataType DeQueue();
DataType Front();
};

  

LinkQueue.cpp
#include "LinkQueue.h"
#include <iostream>
using namespace std; void LinkQueue::Initial()
{
front = rear = NULL;
}
bool LinkQueue::IsEmpty()
{
return front == NULL;
} void LinkQueue::EnQueue(DataType temp)
{
Node* tempnode = (Node*)malloc( sizeof(Node));
tempnode->data = temp;
tempnode->next = NULL; if(IsEmpty())
{
front = rear = tempnode;
}
else
{
rear->next = tempnode;
rear = tempnode;
}
} DataType LinkQueue::DeQueue()
{
if(IsEmpty())
{
cout<< "链???队??列?D为a空?" ;
}
else
{
Node * tempnode = (Node*)malloc( sizeof(Node));
tempnode = front;
DataType temp;
temp = tempnode->data;
front = front->next;
if(rear==tempnode)
rear= NULL;
free(tempnode);
return temp;
}
}
DataType LinkQueue::Front()
{
if(IsEmpty())
{
cout<< "链???队??列?D为a空?" ;
}
else
return front->data;
}

  

main.cpp
#include <iostream>
#include "SeqQueue.h"
#include "LinkQueue.h"
using namespace std; int main()
{
SeqQueue mySeqQueue;
mySeqQueue.Initial();
mySeqQueue.EnQueue( 'a');
cout<<mySeqQueue.Front();
mySeqQueue.EnQueue( 'b');
mySeqQueue.EnQueue( 'c');
cout<<mySeqQueue.DeQueue();
cout<<mySeqQueue.DeQueue();
cout<<mySeqQueue.DeQueue();
mySeqQueue.DeQueue(); LinkQueue myLinkQueue;
myLinkQueue.Initial();
myLinkQueue.EnQueue( 'a');
myLinkQueue.EnQueue( 'b');
myLinkQueue.EnQueue( 'c');
cout<<myLinkQueue.DeQueue();
cout<<myLinkQueue.DeQueue();
cout<<myLinkQueue.DeQueue();
myLinkQueue.DeQueue();
return 0;
}

  

数据结构自己实现——queue的更多相关文章

  1. Python与数据结构[2] -> 队列/Queue[0] -> 数组队列的 Python 实现

    队列 / Queue 数组队列 数组队列是队列基于数组的一种实现,其实现类似于数组栈,是一种FIFO的线性数据结构. Queue: <--| 1 | 2 | 3 | 4 | 5 |<-- ...

  2. 第二十四篇 玩转数据结构——队列(Queue)

          1.. 队列基础 队列也是一种线性结构: 相比数组,队列所对应的操作数是队列的子集: 队列只允许从一端(队尾)添加元素,从另一端(队首)取出元素: 队列的形象化描述如下图: 队列是一种先进 ...

  3. 数据结构-Stack和Queue

    实现: #include "c2_list.h" template <typename object> class Stack{ public: bool isEmpt ...

  4. Python数据结构应用2——Queue

    Reference: Problem Solving with Algorithms and Data Structures, Release 3.0 队列 Queue 建立 class Queue: ...

  5. 自己实现数据结构系列四---Queue

    一.代码部分 1.定义接口: public interface Queue<E> { void enqueue(E e); E dequeue(); E getFront(); int g ...

  6. python 数据结构 队列(queue)

    如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/10293817.html 欢迎关注小婷儿的博客: 有问题请在博客下留言或加作者微信:t ...

  7. 算法与数据结构基础 - 队列(Queue)

    队列基础 队列具有“先进先出”的特点,用这个特点我们可以用它来处理时间序列相关或先后次序相关的问题,例如 LeetCode题目 933. Number of Recent Calls,时间复杂度O(1 ...

  8. 数据结构:队列queue 函数push() pop size empty front back

    队列queue: push() pop() size() empty() front() back() push()  队列中由于是先进先出,push即在队尾插入一个元素,如:可以输出:Hello W ...

  9. 数据结构之队列(queue)

    队列介绍 1.队列是一个有序列表,可以用数组或是链表来实现. 2.遵循先入先出的原则.即:先存入队列的数据,要先取出.后存入的要后取出. 应用场景 比如某某银行叫号系统: 数组模拟队列 队列本身是有序 ...

  10. 数据结构与算法-queue

    队列和stack类似,stack是先进后出,而queue的先进先出,也是一种特殊的线性表 基本概念 概念 队列是一种特殊的线性表 队列仅在线性表的两端进行操作 队头(Front):取出数据元素的一端 ...

随机推荐

  1. (73)zabbix用户认证方式 内建、HTTP Basic、LDAP

    公司大大小小众多系统,不同系统不同的账号密码,管理上相当复杂,后来慢慢出现了SSO等账号统一验证,其他zabbix也提供了类似的方法,或许有些公司便可以使用公司提供的账号来登录zabbix了. zab ...

  2. guava笔记

    ​guava是在原先google-collection 的基础上发展过来的,是一个比较优秀的外部开源包,最近项目中使用的比较多,列举一些点.刚刚接触就被guava吸引了... ​    ​这个是gua ...

  3. SQL_5_子句

    接下来讲到的子句有: WHERE STARTING WITH ORDER BY GROUP BY HAVING WHERE: 使用频率仅次于SELECT和FROM STARTING WITH: 附加于 ...

  4. HDU 2852 KiKi's K-Number 主席树

    题意: 要求维护一个数据结构,支持下面三种操作: \(0 \, e\):插入一个值为\(e\)的元素 \(1 \, e\):删除一个值为\(e\)的元素 \(2 \, a \, k\):查询比\(a\ ...

  5. 光学字符识别OCR-8 综合评估

    数据验证 尽管在测试环境下模型工作良好,但是实践是检验真理的唯一标准.在本节中,我们通过自己的模型,与京东的测试数据进行比较验证.         衡量OCR系统的好坏有两部分内容:(1)是否成功地圈 ...

  6. TOJ1840: Jack Straws 判断两线段相交+并查集

    1840: Jack Straws  Time Limit(Common/Java):1000MS/10000MS     Memory Limit:65536KByteTotal Submit: 1 ...

  7. Map容器——HashMap及常用API,及put,get方法解析,哈希码的产生和使用

    Map接口 ①   映射(map)是一个存储键/值对的对象.给定一个键,可以查询到它的值,键和值都是对象; ②   键必须是唯一的,值可以重复; ③   有些映射可以接收null键和null值,而有的 ...

  8. 【java基础 14】锁的粒度:ThreadLocal、volatile、Atomic和Synchronized

    导读:题目中提到的几个关键字,分别是解决并发问题中,加锁所使用到的几个关键字,每个关键字代表的锁的粒度 不同,本篇博客,主要是从概念定义上,区分这几个关键字的应用场景.(PS:睡梦中,依稀记得有回面试 ...

  9. Welcome-to-Swift-17自判断链接(Optional Chaining)

    自判断链接(Optional Chaining)是一种可以请求和调用属性.方法及子脚本的过程,它的自判断性体现于请求或调用的目标当前可能为空(nil).如果自判断的目标有值,那么调用就会成功:相反,如 ...

  10. Codeforces 903F Clear the Matrix

    题目大意 考虑一个 $4$ 行 $n$ ($4\le n\le 1000$)列的矩阵 $f$,$f$ 中的元素为 * 或 . . 对 $f$ 进行若干次如下变换: 将一个 $k\times k$($1 ...