- 浏览: 761673 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
这段代码存在内存泄漏,先mark一下!
SeqQueue.h
SeqQueue.cpp
SeqQueue.h
#ifndef SEQQUEUE_H #define SEQQUEUE_H #include<iostream> #include"Queue.h" using namespace std; template<typename T> class SeqQueue:public Queue<T>{ public: SeqQueue(int sz=100); ~SeqQueue(){/*delete elements;*/}//这里有点问题 bool EnQueue(const T &x); bool DeQueue(T &x); bool getFront(T &x); bool IsEmpty()const; bool IsFull()const; int getSize()const; void makeEmpty(); friend ostream& operator<<(ostream& os,SeqQueue<T>& queue){ for(int i=queue.front;i!=queue.rear;i=(i+1)%queue.maxSize){ os << queue.elements[i] << " "; } os << endl; return os; } protected: int rear,front; T *elements; int maxSize; }; #endif // SEQQUEUE_H
SeqQueue.cpp
#include"SeqQueue.h" #include<assert.h> template<typename T> SeqQueue<T>::SeqQueue(int sz) { front = rear = 0; maxSize = sz; elements = new T(maxSize); assert(NULL!=elements); } template<typename T> bool SeqQueue<T>::EnQueue(const T &x) { if(IsFull()){ return false; } elements[rear]=x; rear=(rear+1)%maxSize; return true; } template<typename T> bool SeqQueue<T>::DeQueue(T &x) { if(IsEmpty()){ return false; } x = elements[front]; front = (front+1)%maxSize; return true; } template<typename T> bool SeqQueue<T>::getFront(T &x) { if(IsEmpty()){ return false; } x = elements[front]; return true; } template<typename T> bool SeqQueue<T>::IsEmpty() const { return front==rear?true:false; } template<typename T> bool SeqQueue<T>::IsFull() const { return (rear+1)%maxSize==front?true:false; } template<typename T> int SeqQueue<T>::getSize() const { return (rear-front+maxSize)%maxSize;//循环队列里面最多只能放maxSize-1个元素 } int main() { SeqQueue<int> queue(20); int num=0; for(int i=0;i<10;++i){ num++; queue.EnQueue(num); } for(int i=0;i<5;++i){ queue.DeQueue(num); } cout << queue; } 6 7 8 9 10
发表评论
-
时间复杂度推导
2012-06-05 22:57 9791.用常数1取代运行时间中的所有加法常数 2.在修改后的运行次 ... -
数据结构概论2
2012-06-04 22:19 805数据元素:组成数据的,有一定意义的基本单位,在计算机中通常作为 ... -
排序概念
2011-06-24 14:51 782数据表:待排序数据元素的有很集合 排序码:通常数据元素有多个 ... -
图的基本概念
2011-06-20 16:18 746完全图:n个顶点,n*(n-1)/2个边的无向图,就是无向完全 ... -
红黑树
2011-06-16 14:29 511红黑树: 1.根结点和所有的叶结点都是黑色 2.从根结点到叶结 ... -
链表反转
2011-06-12 18:03 1097template<typename T> v ... -
散列表(哈希表)
2011-06-09 09:55 1077散列表(hash table):是表示集合和字典的另一种有效方 ... -
跳 表
2011-06-08 11:12 800#ifndef SKIPLIST_H #define S ... -
字 典
2011-06-08 10:06 924字典:以集合为基础,并支持支持Member,Insert和Re ... -
LinkedSet
2011-06-07 13:08 921改了很久的bug #ifndef LINKEDSET_H ... -
bitset
2011-06-06 12:27 883bitSet.h #ifndef BITSET_H #d ... -
Huffman树
2011-06-02 11:06 910Huffman树,又称最优二叉树,是一类加权路径长度最短的二叉 ... -
堆
2011-06-02 09:19 949在优先级队列的各种实现中,堆是最高效的一种数据结构 关键码: ... -
森 林
2011-06-01 11:09 596森林与二叉树互转,主要是子结点转左子树,兄弟结点转右子树 深 ... -
二叉树的链式实现
2011-05-31 11:24 1263binaryTree.h #ifndef LINKEDBI ... -
二叉树基本概念
2011-05-30 10:05 841一棵二叉树的结点的一个有限集合:该集合或者为空,或者是由一个根 ... -
树基本概念
2011-05-30 09:28 888结点(node):包含数据项及指向其他结点的分支。 结点的度( ... -
广义表
2011-05-27 10:57 933广义表的定义是递归的,因为在表的描述中又用到了表,允许表中有表 ... -
矩阵相关
2011-05-26 10:22 929矩阵:是一个具有m行n列的二维数组。 上三角矩阵:只存储对角 ... -
优先级队列
2011-05-21 11:24 598PQueue.h #ifndef PQUEUE_H #d ...
相关推荐
循环队列源代码 循环队列是一种数据结构,它通过一个数组或链表来存储元素,并提供了队列操作的接口。队列是一种先进先出的数据结构,元素的添加和删除都是从队头和队尾进行的。在本资源中,我们将探讨循环队列的...
循环队列是一种线性数据结构,它在计算机科学中被广泛应用于数据缓存、消息队列等场景。相比于传统的队列,循环队列利用数组的循环特性,避免了队列满或空时需要重新分配内存的问题,提高了空间利用率和操作效率。在...
循环队列是一种线性数据结构,它通过在队尾出队和队头入队时进行适当的操作,使得队列在物理存储空间上形成一个环形结构。这种设计使得队列在处理大量数据时能有效避免数组下标越界的问题,提高了空间利用率。在...
循环队列作为一种高效的数据结构,在串口通信的缓冲区管理中扮演着重要角色。这里我们将深入探讨串口缓冲区的概念、循环队列的工作原理以及如何在STM32F103ZET6微控制器上应用这些技术。 串口缓冲区是用于存储串口...
书中可能包含了各种操作循环队列的示例代码,通过分析和实践这些代码,可以加深对循环队列的理解,提升编程技能。 总之,循环队列是数据结构中不可或缺的一部分,它在解决实际问题时发挥着重要作用。严蔚敏教授的...
循环队列是一种线性数据结构,它在物理结构上实现了一个首尾相接的闭合序列,从而解决了普通队列在满和空时的操作限制。循环队列的主要优点是消除了队头和队尾的特殊状态,使得在处理数据时效率更高。下面将详细介绍...
循环队列是一种线性数据结构,它在物理结构上实现了一个闭合的循环,因此队首和队尾可以在数组的任意位置。这种设计使得在队列满或空时,仍能有效地进行入队和出队操作,避免了普通队列在达到边界条件时的特殊处理。...
循环队列是一种特殊的队列,它在队列的两端都可以进行插入和删除操作,通过对循环队列的基本操作和应用,我们可以更好地理解和掌握数据结构的概念。 循环队列的基本操作 循环队列的基本操作包括构造、清空、销毁、...
循环队列是一种常见的线性数据结构,它具有先进先出(FIFO)的特性,即最早进入队列的元素最先离开。这个特性使得循环队列在处理一系列有序任务或者缓存管理等方面有着广泛的应用。本文将详细探讨Android中如何实现...
本项目涉及的关键知识点是“循环队列”、“485收发”以及“协议制作”,这些对于理解如何高效地实现串口数据传输至关重要。 首先,我们来了解一下**循环队列**。循环队列是一种线性数据结构,它利用数组的循环特性...
### C语言实现仅有尾指针的循环队列 在数据结构的学习过程中,循环队列是一种重要的数据结构之一,尤其在解决计算机系统中的缓冲问题时应用广泛。本篇将基于题目提供的部分代码,深入探讨如何使用C语言实现一个仅有...
循环队列和约瑟夫环问题 循环队列是一种特殊的队列结构,它的特点是队列的末尾元素连接着队列的开头元素,形成一个环形结构。这种数据结构可以用来解决约瑟夫环问题。 约瑟夫环问题是一个经典的问题,它是由古罗马...
在这个场景中,我们关注的是使用SCL(Structured Control Language)编程语言实现的一种特定算法——循环队列FIFO(First In First Out)算法,并且这个算法被封装在了一个FB(Function Block)库文件中。...
循环队列是数据结构中的一种线性数据结构,它的特点是队尾指针可以在数组范围内的任何位置循环前进,从而避免了普通队列在队列满时需要重新申请空间的问题。循环队列的设计使得其在存储空间上的利用率较高,且在处理...
在计算机科学中,多线程和循环队列是两个重要的概念,它们在高效并发编程中发挥着关键作用。本文将详细探讨多线程环境下的循环队列应用。 首先,我们来理解多线程。多线程是一种编程模型,允许一个程序同时执行多个...
### 数据结构实验三:循环队列基本操作及约瑟夫环问题 #### 实验背景与目标 本实验旨在通过实际编程任务加深学生对于循环队列的理解及其在解决具体问题中的应用能力。实验主要包括两个部分: 1. **循环队列基本...
在Java中,队列的实现主要有三种:顺序队列、链式队列和循环队列。下面我们将详细探讨这三种队列的实现方式。 1. **顺序队列**: 顺序队列通常是基于数组实现的。在Java中,我们可以使用ArrayList或LinkedList来...
循环队列是串口通信中数据缓冲区管理的一种高效实现,它在处理实时性要求较高的数据流时尤为有用。下面我们将详细探讨“array_串口队列_循环队列_”这一主题。 首先,我们来看一下“串口队列”。串口队列是串行通信...