容器适配器:stack栈,queue队列,priority_queue优先队列 stack:先进后出,后进先出,有栈顶和栈底,存和取通过栈顶完成 stack<int> s; s.push(5);//存5 入栈 s.push(3);//存3 s.push(2);//存2 while(!s.empty()){//只要s不为空,就执行循环 cout<<s.top();//输出栈顶元素 2 3 5 s.pop();//移除栈顶元素 出栈 } queue:先进先出,后进后出,有队头和队尾,存通过尾完成,取通过头完成 queue<int> q; q.push(5);//存数据 入队 q.push(3); q.push(2); while(!q.empty()){//只要队不为空,就执行循环操作 cout<<q.front();//5 3 2 获取队头 q.pop();//出队 } priority_queue:大的先出,大致有序,有队顶 priority_queue<int> q; q.push(5); q.push(8); q.push(3); while(!q.empty()){ cout<<q.top();//输出队顶元素 8 5 3 q.pop(); } 序列容器:5种线型结构,存储顺序与存入顺序有关 array,deque,vector 物理连续 forward_list,list 指针连接 关联容器:2类树型结构,存储顺序与存入的值大小有关 set,map:自动排序,自动去重 容器适配器:3类 有固定的存取规则 stack,queue 线型 priority_queue 树型 树的概念(图) 创建树的代码 1、指针存树 struct node{ int num; vector<node*> v; }; 2、数组存树(父节点唯一) int fat[1000]={}; int a,b; while(边的数量){ cin>>a>>b;//a是b的父节点 fat[b]=a; } 3、邻接表 vector<list<int>> vl; 二叉树->概念->代码 完全二叉树->概念->代码 二叉堆->概念->代码 哈夫曼树->概念->代码 二叉搜索树->概念->代码 |