【C++数据结构】栈(Stack)和队列(Queue)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_42269817/article/details/102599802

堆:是在程序运行时,而不是在程序编译时,申请一个内存。即动态内存分配,对其访问和对一般内存的访问没有区别。堆就是在程序运行时申请的动态内存,栈是使用堆的一种方法(先进先出)。

程序编译时是不分配内存的此时只是根据声明时的类型进行占位,到以后程序执行时分配内存才会正确。

所谓在编译时分配空间是指静态分配空间(相对于用new动态申请空间),全局变量静态变量包括一些复杂类型的常量,他们所需要的空间大小可以明确计算出来,并且不会改变。

栈:先进后出,LIFO(last in first out)

顺序栈:顺序存储结构

链栈:采用链式存储结构

顺序栈和链栈实现方式的区别,在于数据元素在实际物理空间上存放的相对位置,顺序栈底层采用的是数组,链栈底层采用的是链表。

peek():查找栈顶元素

pop()移除栈顶元素并返回函数值。

push()把一个元素放到栈顶

队列:FIFO先进先出,后进后出,与栈不同的是队列两端都开口,要求数据只能从一端进,从另一端出。先进先出。

扫描二维码关注公众号,回复: 7583220 查看本文章

顺序队列:顺序表

链队列:链表

猜你喜欢

转载自blog.csdn.net/weixin_42269817/article/details/102599802