基本结构
第一种
struct SNode {
ElementType *Data;
Position Top;
int MaxSize;
};
typedef struct SNode *Stack;
第二种
#define MAXSIZE 100
typedef struct Snode *stack;
struct Snode{
ElementType Data[MAXSIZE];
int top;//最顶上元素下标
};
初始化
第一种基本结构对应初始化
Stack CreateStack( int MaxSize )
{
Stack S;
S=(Stack)malloc(sizeof(Stack));// one stack
S->Data=(ElementType*)malloc(sizeof(ElementType)*MaxSize);//一个栈有很多个数字
S->MaxSize=MaxSize;
S->Top=-1;
return S;
}
第二种基本结构对应初始化
stack CreateStack()
{
stack S;
S=(stack)malloc(sizeof(stack));// one stack
S->top=-1;
return S;
}
基本操作
1.入栈
void Push(stack ptrS,ElementType item)
{
if(ptrS->top==MAXSIZE-1)
{
printf("堆栈满");
return;
}
else{
ptrS->top++;
ptrS->Data[ptrS->top]=item;
/*等价于
ptrS->Data[++(ptrS->top)]=item;
*/
return ;
}
}
2.出栈
ElementType pop(stack ptrS)
{
if(ptrS->top==-1)//栈空(若栈中有一个元素,则top为最顶上元素下标0)
{
printf("栈空");
return ERROR;
}
else
{
return (ptrS->Data[ptrS->top]--);
//等价于
/* int num;
num=ptrS->Data[ptrS->top];
ptrS->top--;
return num;*/
}
}