暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

数据结构:第十七节-初识栈与队列

Cpp入门到精通 2024-06-02
86

点击蓝字

山月

关注我们

第十七节 初识栈与队列


前面我们介绍了第一种数据结构-线性表,线性表是由 n(n ≥ 0)个相同特性的数据元素组成的有限序列,元素之间存在一对一的顺序关系。我们这节要介绍的数据结构为队列。栈与队列是特殊的线性表


栈是一种特殊的线性表,具有后进先出(LIFO,Last In First Out)的特性。类似现实生活当中在餐桌上的一摞盘子,只能在盘堆的顶端进行放和拿。


栈具有以下的特点:

1.后进先出(LIFO):栈中最后插入的元素将会最先被移除。

2.只允许在栈顶操作:栈的基本操作包括压栈(Push)弹栈(Pop)。压栈操作将元素添加到栈顶,弹栈操作将栈顶元素移除并返回。

3.操作受限:除了压栈和弹栈操作外,栈不允许随机访问或插入、删除中间元素。

4.栈的应用:栈常用于需要临时保存数据并按照相反的顺序访问的情况,如递归函数调用、表达式求值等。

5.时间复杂度:栈的基本操作的时间复杂度通常是 O(1),即常数时间复杂度。

现在我们思考一个问题,假设有a,b,c三个元素按顺序入栈,有几种出栈方式呢?

有五种出栈方式:

1.c、b、a 出栈

依次将元素a、b、c都入栈,再依次将栈顶元素c、b、a都出栈。

2.b、c、a 出栈

先将元素a、b都入栈,再把栈顶元素b出栈,再将c入栈,依次将栈顶元素c、a出栈。

3.b、a、c 出栈

先将元素a、b入栈,再将栈顶元素b、a出栈,然后将c入栈再出栈。

4.a、b、c 出栈

将单个a、b、c分别入栈后出栈。

5.a、c、b 出栈

先将元素 a 入栈再出栈,再将b、c入栈,再依次将栈顶元素c、b 出栈。


栈可以分为以下几个类型

1.顺序栈:使用数组实现的栈,通常具有固定大小的容量,因此是静态线性表,在顺序栈中,栈的元素在内存中是连续存储的。

2.链式栈:使用链表实现的栈,可以动态地分配内存空间。链式栈中的元素由节点构成,每个节点包含数据和指向下一个节点的指针。

3.动态扩容栈:在顺序栈的基础上增加了动态扩容的能力。当栈满时,会自动分配更大的内存空间,并将原有元素复制到新的内存空间中。

4.双向栈:具有两个栈顶,分别从两端进行入栈和出栈操作。双向栈可以用于一些特定的应用场景,例如双向队列。

5.并行栈:允许同时进行多个栈的入栈和出栈操作。并行栈通常用于并行计算或多线程编程中。

队列也是一种特殊的线性表,具有先进先出(FIFO)的特性。顾名思义,队列就像我们现实当中排队结账,先排的先出。


队列具有以下特点:

1.先进先出(FIFO):队列中最先插入的元素将会最先被移除。

2.只允许在队首和队尾操作:队列的基本操作包括入队出队。入队操作将元素添加到队列的尾部,出队操作将队列头部的元素移除并返回。

3.操作受限:除了入队和出队操作外,队列不允许随机访问或在中间插入或删除元素。

4.队列的应用:队列常用于需要按照先后顺序处理数据的情况,如任务调度、消息队列,缓冲区管理等。

5.时间复杂度:队列的基本操作的时间复杂度通常是 O(1),即常数时间复杂度。


队列可以分为以下几个类型:

1.普通队列:普通队列是最常见的队列类型,可以使用数组链表来实现,支持基本的入队和出队操作。

2.双端队列:双端队列允许在队列的两端进行入队和出队操作,可以使用数组或链表来实现。它提供了队列和栈的功能,可以在队列的两端执行入队和出队操作。

3.循环队列:循环队列是一种环形结构的队列,通过循环利用数组空间来实现。当队列尾部达到数组末尾时,循环队列会将尾部指针移到数组的开头,实现循环利用。提高了数组空间的利用率,避免了因连续入队导致的队列空间耗尽的问题。

4.优先级队列:优先级队列是一种特殊的队列,其中的元素按照优先级顺序排列。具有最高优先级的元素最先出队,可以使用堆(Heap)等数据结构来实现。

5.阻塞队列:阻塞队列是一种特殊的队列,当队列为空时,出队操作会被阻塞直到队列中有元素。当队列已满时,入队操作也会被阻塞直到队列有空闲空间。通常用于多线程编程中的生产者-消费者模式。

6.并发队列:并发队列是一种线程安全的队列,支持多个线程同时进行入队和出队操作。使用锁或无锁等技术来保证线程安全性。

这节我们先简单介绍栈和列的定义及分类,感谢观看!欢迎各位的点赞与关注!您的点赞和关注是我学习更新的动力!如有问题,可下方留言!



往期推荐

C++基础知识

C++进阶知识

C++STL知识

• end • 

欢我们的内容就点“在看”分享给小伙伴哦

文章转载自Cpp入门到精通,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论