堆栈的顺序存储结构通常由两部分组成,一个一维数组,一个记录栈顶元素位置的变量组成。
指示栈顶位置,自然,这个值就是数组的下标了,因此,有一个元素时,数组元素的下标为0,数组元素为空时,栈顶指针为-1。
定义堆栈:
#define MaxSize <存储数据元素的最大个数>
typedef struct{
ElementType Data[MaxSize];
int top;//栈顶指针
}Stack;
堆栈操作:压栈
void Push(Stack *PtrS, ElementType item)
{
if(PtrS->Top==MaxSize){
printf("堆栈满");
return;
}
else{
PtrS->Data[++(PtrS->Top)]=item;//注意这里,对栈顶指针进行赋值操作,先将栈顶指针数值加1,再对其进行赋值。
return;
}
}
出栈操作
ElementType Pop(Stack *PtrS){
if(Pstr->Top==-1){
printf("堆栈为空");
return;
}
else
return (PtrS->Data[(PtrS->Top)--]); //同样,这里是先将栈顶的值进行了返回,再将栈顶指针的值减一。
}