【栈】
栈的特性是先进后出。
pop:把栈顶元素弹出栈
push:把元素压入栈
peek:得到栈顶元素的值
/*
首先建立一个N大小的数组arr[N],表示这个栈最多有N个元素
用size表示栈中元素的个数,初始size = 0,且表示下一个压栈元素的位置
*/
void push(int num){
if(size >= N ){
cout << "栈满" << endl;
return;
}
arr[size++] = num;
}
int pop(){
if(size == 0){
cout << "栈空" << endl;
return;
}
return arr[--size];
//peek就改成 return arr[size-1];
}
【队列】
队列的特性是先进先出
依旧是建立一个数组,N代表容量, size代表当前元素个数
不同的是,压入队列和弹出队列用不同的指针来指向,这里用end表示下一个压入队列的元素位置,begin表示弹出队列的位置,用size约束end和begin,如果size为0,则begin失效,如果size=N,则end失效;end和begin之间互不影响。如果end指向N且size!=N,则循环end,指向最开始的位置、begin一样
(begin转圈追end都追不上)
void enq(int num){
if(size==N) return;
end %= N;
arr[end++] = num;
size++;
}
int deq(){
if(size==0) return;
begin %= N;
size--;
return arr[begin++];
}