stack&&queue

(1) 栈

概念定义:栈属于动态集合,采用先进后出策略(LIFO)。基本操作是压入(PUSH)和弹出(POP)。如果s.top=0,表示栈空,如果试图对空栈进行POP操作会发生下溢(underflow)。如果s.top>n,表示栈满,如果进行PUSH操作会发生上溢(overflow)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58

#include <time.h>
using namespace std;
const n=10;
struct {
int top;
int Array[n];
}s;

int Init_Stack(){
s.top = 0;//top为0表示空栈
return 1;
}
//判断栈是否为空
bool stack_empty(int Array[]){
if (s.top==0){
return true;
}
else{
return false;
}
}
//入栈
void stack_push(int Array[],int x){
if (s.top==n){
cerr<<"overflow!"<<endl;
}
else {
s.top++;
s.Array[s.top]=x;

}
}
//出栈
int stack_pop(int Array[]){
if (stack_empty(s.Array)){
cerr<<"underflow"<<endl;
return -1;
}
else{
s.top--;
return s.Array[s.top+1];
}
}
void main(){
struct s;
Init_Stack();
int x=0;
srand( (unsigned)time( NULL ) );
for ( int i=0;i<n;i++){
x=rand()%100;
stack_push(s.Array,x);
}
for (i=0;i<n;i++){
cout<<stack_pop(s.Array)<<endl;
}

}

(2) 队列