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
|
#
include
<stdio.h>
#
include
<stdlib.h>
//导入stdlib.h模块是为了使用sizeof函数
typedef struct{
//定义栈Stack的类型
int
*base;
int
top;
int
stack_size;
} Stack;
int
InitStack(Stack &S,
int
size){
//初始化栈
S.base = (
int
*)malloc(size * sizeof(
int
));
//开辟一段地址,并把首地址赋给S.base
if
(S.base == NULL)
return
0
;
//如果地址开辟失败,就返回0
S.top =
0
;
//S.top为0,表示此时栈为空栈
S.stack_size = size;
//记录栈的大小,这里为可以存放size个int类型的数据
return
1
;
//初始化栈成功,返回1
}
int
Push(Stack &S,
int
e){
//入栈操作
S.base[S.top] = e;
//此时S.top为0,让S.base地址块的首地址存放数据e
S.top++;
//让S.top指向下一个开辟的地址
return
1
;
//数据入栈成功,返回1
}
int
Pop(Stack &S){
//出栈操作
if
(S.top ==
0
)
//S.top为0,表示指向栈的开始,即数据已全部出栈
return
0
;
S.top--;
//未全部出栈,让S.top减1,使S.base可以指向前1个数据
return
S.base[S.top];
//返回数据
}
int
exchange(
int
x,
int
y){
Stack S;
//定义一个新栈(本质为结构体)
InitStack(S,
3
);
//初始化栈,并且栈的大小为3
Push(S, x);
//把x压入栈
Push(S, y);
//把y压入栈
x = Pop(S);
//出栈
y = Pop(S);
//出栈
printf(
"x=%d\ny=%d\n"
, x, y);
return
1
;
}
int
main(
void
)
{
int
x, y;
printf(
"Please enter x:"
);scanf(
"%d"
,&x);
printf(
"Please enter y:"
);scanf(
"%d"
,&y);
exchange(x, y);
return
0
;
}
|
1
2
3
4
|
Please enter x:
30
Please enter y:
40
x=
40
y=
30
|