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. Mybatis 循环 foreach, 批量操作

    mapper.java: int modifySortOfGoods(@Param("idlist") List<String> goodsIds, @Param(&q ...

  2. centos7重启后/etc/resolv.conf 被还原解决办法

    每次重启服务器后,/etc/resolv.conf文件就被自动还原了,最后发现是被Network Manager修改了. 查看Network Manager服务状态 systemctl status ...

  3. LeetCode1090. 受标签影响的最大值

    问题: 我们有一个项的集合,其中第 i 项的值为 values[i],标签为 labels[i]. 我们从这些项中选出一个子集 S,这样一来: |S| <= num_wanted 对于任意的标签 ...

  4. charles抓手机包

    charles抓手机包   如果是使用charles抓包.一定要tm的保证手机和电脑连的是一个网.   1.proxy setting,查看charles,端口 2.勾选   3.ipconfig,查 ...

  5. wamp开发环境配置之配置Apache虚拟主机

    网站建设人员在本地测试时,常常不是一个网站,那怎么能像输入域名一样在地址栏上面输入“域名”就能本地访问该网站呢?这里就要配置Apache虚拟主机了! 1.找到apache\conf\httpd.con ...

  6. sql执行过长,如何入手优化

    一条sql执行过长的时间,你如何优化,从哪些方面 1.查看sql是否涉及多表的联表或者子查询,如果有,看是否能进行业务拆分,相关字段冗余或者合并成临时表(业务和算法的优化)2.涉及链表的查询,是否能进 ...

  7. Kattis - doubleclique (图论)

    From : North American Invitational Programming Contest 2018 给你一个图,以及它的补图.如果部分点在原图中是团,并且其他的所有点在补图中也是团 ...

  8. Monkeyrunner脚本的录制与回放

    继上一篇monkeyrunner环境搭建:http://www.cnblogs.com/zh-ya-jing/p/4351245.html 之后,我们可以进一步学习monkeyrunner了. 我也是 ...

  9. private virtual in c++

    source from http://blog.csdn.net/steedhorse/article/details/333664 // Test.cpp #include <iostream ...

  10. day03_12 缩进介绍

    python比较变态,必须缩进,而C可以不缩进,世界上只有python这门语言要求必须缩进 tab键是缩进,shift+tab往左移动 SyntaxError:invalid syntax 语法错误 ...