欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

栈与队列

程序员文章站 2022-05-23 23:14:49
...

1.栈是一种线性存储结构,元素遵循“先进后出”,并且只能在栈顶进行插入和删除,

2、栈的相关概念:

(1)栈顶与栈底:允许元素插入与删除的一端称为栈顶,另一端称为栈底
(2)压栈:栈的插入操作,叫做进栈,也称压栈、入栈。
(3)弹栈:栈的删除操作,也叫做出栈。

3、栈的常用操作为:

(1)弹栈,通常命名为pop
(2)压栈,通常命名为push
(3)求栈的大小
(4)判断栈是否为空
(5)获取栈顶元素的值

s.empty();         //如果栈为空则返回true, 否则返回false;
s.size();          //返回栈中元素的个数
s.top();           //返回栈顶元素, 但不删除该元素
s.pop();           //弹出栈顶元素, 但不返回其值
s.push();          //将元素压入栈顶

队列

另一种线性存储结构–队列。他的元素遵循“先进先出”,队首删除,队尾插入
队列在数据结构中分为普通队列和环形队列。首先说说普通队列,就是一种类似隧道的数据结构,对于队列里的数据,是先入先出,这点和栈相反。但是普通队列有些缺点,下面来说说普通队列缺点。
普通队列的数据从对头开始离开的时候,后面一个内存空间会变为新的队头,那么对头离开后剩下的内存空间就被剩下了,这就让内存空间利用率不高。但是环形队列就可以很好的解决这个问题,但是有点难哈。
环形队列就是一个换,这个环里可以分配内存空间,数据在环里进行排队,对头删了,又可以加上新的数据变为队伟,这样内存的使用率就增加了

class Qu
{
public:
    Qu(int QueueCapaticy);//构造函数来产生一个内存空间,用来存放队列
    void clearQu();//清楚队列里的数据
    bool  emptyQu() const;//判断队列是否为空队列
    int QuLen();//返回值为队列长度
    bool enterQu(int element);//数据进入队列
    bool deleteQu(int element);//删除队列里的数据
    bool fullQu();//判断队列是否满状态,满了就不能插入数据了
    void travelQu();//遍历数列里的数据
private:
    int m_iQueueCapaticy;//队列存储内存空间大小
    int m_iQueueLen;//记录队列长度
    int m_iHead;//队列头
    int m_iTail;//队列尾
    int*  m_pQueue;//队列指针

};
相关标签: 栈与队列