C++栈与队列
来源:互联网 发布:保利水管 知乎 编辑:程序博客网 时间:2024/06/08 15:23
栈:
栈是一种特殊的线性表,栈的插入和删除操作只允许在表尾一端进行,因此栈是操作受限线性表。栈可以是顺序存储,也可以是链式存储。
往栈里插入一个元素称为进栈(push),从栈里删除一个元素称为出栈(pop)。同时还有一个栈顶指针(top),总是指向最后一个进栈的元素,当top=-1 时 表示栈为空,top=MaxSize-1 表示栈已满,再进行插入操作会溢出。
使用标准库的栈和队列时,先包含相关的头文件
#include<stack>
定义栈如下:
stack<int> stk;
栈提供了如下的操作
s.empty() 如果栈为空返回true,否则返回falses.size() 返回栈中元素的个数s.pop() 删除栈顶元素但不返回其值s.top() 返回栈顶的元素,但不删除该元素s.push() 在栈顶压入新元素
队列:
队列也是一种操作受限的线性表,队列的插入操作只允许在表尾一端进行,而删除操作只允许在表头进行。
队列设置两个指针进行管理,一个指针是队头指针front,它指向队头元素;另一个指针是队尾指针rear,它指向下一个入队元素的存储位置。当front=rear 时,队中没有任何元素。
#include<queue>
定义队列如下:
queue<int> q;
q.empty() 如果队列为空返回true,否则返回falseq.size() 返回队列中元素的个数q.pop() 删除队列首元素但不返回其值q.front() 返回队首元素的值,但不删除该元素q.push() 在队尾压入新元素q.back() 返回队列尾元素的值,但不删除该元素
循环队列:
当队列为空时front=rear ,而当所有的队列空间全占满时也有front=rear 。为了区别这种情况,规定循环队列最多只能有MaxSize-1 个对列元素,当循环队列中只剩下一个空存储单元时,对列就已经满了。因此,队列判断空的条件是front=rear ,而队列判断满的条件是 front=(rear+1)%MaxSize 。
在STL中,对队列的使用很是较完美
下面给出循环队列的运算算法:
(1)将循环队列置为空
//将队列初始化
SeQueue::SeQueue()
{ front=0;
rear=0;
cout<<"init!"<<endl;
}
(2)判断循环队列是否为空
int SeQueue::Empty()
{ if(rear==front) return(1);
else return(0);
}
(3)在循环队列中插入新的元素x
void SeQueue::AddQ(ElemType x)
{ if((rear+1) % MAXSIZE==front) cout<<" QUEUE IS FULL! "<<endl;
else{ rear=(rear+1) % MAXSIZE;
elem[rear]=x;
cout<<" OK!";
}
}
(4)删除队列中队首元素
ElemType SeQueue::DelQ()
{ if(front==rear)
{ cout<<" QUEUE IS EMPTY! "<<endl; return -1;}
else{ front=(front+1) % MAXSIZE;
return(elem[front]);
}
}
(5)取队列中的队首元素
ElemType SeQueue::Front()
{ ElemType x;
if(front== rear)
cout<<"QUEUE IS EMPTY "<<endl;
else x= elem[(front+1)%MAXSIZE];
return (x);
}
0 0
- C语言-栈与队列
- 栈与队列 c语言
- C++/C语言中链表队列与栈
- c++stl之队列 栈 与优先队列
- 数据结构与算法(C#)--栈和队列
- C++queue队列与stack栈
- 栈与队列->队列
- C ~ 链式队列与循环队列
- (c#)数据结构与算法分析 --栈与队列
- 栈、队列与优先队列
- 双向链表、队列与栈的C/C++实现
- C语言栈与队列疑难点解析
- 数据结构中栈与队列的c语言代码实现
- Linux C语言程序设计(七)——栈与队列
- C++:栈和队列
- C 算法精介----队列->链式队列->分析与实现
- 堆与优先级队列研究(C++)
- c队列与结构体问题
- JavaScript事件绑定和普通事件区别
- uva 10474 Where is the Marble? 解题报告
- PAT|1099. Build A Binary Search Tree
- Java学习之for-each循环与集合的遍历
- Exception sending context initialized event to listener instance of class org.springframework.web.co
- C++栈与队列
- 我的IDL学习
- xml 中dom操作
- android 开源库一览
- 某输入法部门内推一面
- html5报名页面设计
- [leetcode]-3sums @python
- 阿里、Facebook、Cloudera等巨头的数据收集框架全攻略
- 2016 Multi-University Training Contest 8 1001 Ball