1. 栈的特性
1.1 栈只有一个开口,进栈出栈都从一个口过
1.2 栈能实现先进后出,后进先出
1.3 栈只有一个指针,称之为栈顶指针(top)。入栈时栈顶指针加一,出栈时栈顶指针减一
1.4 DFS算法用到了栈(内隐式)
1.5 使用栈是最关键问题是:出入栈的对象是谁,什么时候入栈,什么时候出栈
1.6 栈的基本操作是:出栈,入栈
1.7 用普通数组实现栈
#include<bits/stdc++.h>
using namespace std;
const int n=10;//栈的容量
int s[n];//定义栈
int top;//栈顶指针
void push(int x);//将X入栈,即插入X
void pop();//将栈顶弹出栈,即删除栈顶
int main()
{
return 0;
}
void push(int x)
{
if(top<n-1)//栈未满,防止向上溢出
{
top++;
s[top]=x;
}
else//栈满
{
cout<<"full"<<endl;
}
}
void pop()
{
if(top>0)//栈未空,防止向下溢出
{
top--;
}
else//栈为空
{
cout<<"empt"<<endl;
}
}
1.8 用STL实现栈
2. 队列的特性
2.1 队列有两个开口,从入口(队尾)进,从出口(队头)出
2.2 队列能实现先进先出,后进后出
2.3 队列有两个指针,分别被称之为头指针(head)和尾指针(tail)。入队时尾指针加一,出队时头指针加一
2.4 BFS算法用到了队列
2.5 使用队列是最关键问题是:出入队列的对象是谁,什么时候入队,什么时候出队
2.6 队列的基本操作是:出队,入队
2.7 用普通数组实现队列
#include<bits/stdc++.h>
using namespace std;
const int n=10;//栈的容量
int q[n];//定义栈
int head=0;//头指针
int tail=0;//尾指针
void push(int x);//将X入队,即插入X
void pop();//将队头弹出队,即删除队头
int main()
{
return 0;
}
void push(int x)
{
if(tail<n-1)//队未满
{
tail++;
q[tail]=x;
}
}
void pop()
{
if(head>n-1 && head<=tail)//防止队空
{
head++;
}
}
2.8 用STL实现队列