int Push(STACK *S,int e)//进栈
{
SNode *p
p=(SNode *)malloc(sizeof(SNode))// 申请一个节点.这个节点是用来存放入栈的数据的.
if(!p)
return ERROR// 如果没有申请成功,返回错误.
p->data=e // 节点的值为e
p->next=S->top// 放到栈顶
S->top=p//并修改栈顶为P
S->length++//长度加一.
return OK//入栈成功,返回ok
}
出栈是一样的.
#include<stdio.h>
int
stack[100]
/*100个栈空间*/
int*
sp
=
stack
/*栈指针指向栈底*/
#define
push(
i
)
{
*sp++
=
i
}
/*push一个数*/
#define
pop()
(*--sp)
/*pop一个数并返回*/
int
main()
{
int
i
for
(
i
=
0
i
<
10
++i
)/*push
0~9*/
push(
i
)
for
(
i
=
0
i
<
10
++i
)/*输出9~0*/
printf(
"%d
",
pop()
)
}