欢迎光临
我们一直在努力

数据结构入门(八):优先级队列与递归

上一篇:数据结构与算法(七):快速排序 & 归并排序

STL:priority_queue(优先级队列)

头文件:#include<queue>

#include<iostream>
#include<queue>
using namespace std;
int main() {
//以vector作为底层容器
priority_queue<int, vector<int>, less<int>> q;//创建最大堆
priority_queue<int>;//默认最大堆
priority_queue<int, vector<int>, greater<int>>;//最小堆
//插入元素
q.push(6);
//访问堆顶元素
q.top();
//删除堆顶元素
q.pop();
//判断堆是否为空
q.empty();//返回true1 false0
//由大到小输出元素
while (!q.empty()) {
cout << q.top()<<endl;
q.pop();
}
return 0;
}

递归

函数内部调用自己本身叫做递归,因此编写这样的函数时很容易出错,进而导致无限循环

基线条件(终止条件)和递归条件

递归条件指的是函数调用自己

基线条件知道是函数不再调用自己,从而避免形成无限循环

基线条件应该先于递归条件,否则会一直递归无法终止

练习题

#include<iostream>
using namespace std;
int jump(int n) {
//基线条件
if (n <= 2) {
return n;
}
//递归条件
return jump(n – 1) + jump(n – 2);
}
int main() {
int n;
cout << "青蛙跳上几层高的台阶?"<<endl;
cin >> n;
cout<<jump(n);
}

赞(0)
未经允许不得转载:171主机测评 » 数据结构入门(八):优先级队列与递归
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址