这个是数据结构的模。
typedef int Elemtype
typedef struct
{ ElemType Element[MaxSize];
int Top;
} SeqStack;
SeqStack ListStack;
1.创建一个空栈
void Init_SeqStack(SeqStack *S_pointer)
{ S_pointer->Top=-1;
}
S_pointer指针指向由数组空间Element和Top两个
成员构成的结构体变量。
init_SeqStack (&ListStack);
ListStack 是定义为SeqStack类型的变量。
2.判栈空
int Empty_SeqStack(SeqStack *S_pointer)
{ if (S_pointer ->Top==-1) return True;
else return False;
}
调用方式:
if (Empty_SeqStack (&ListStack)== True)
printf ("空栈\n");
3.判栈满
int Full_SeqStack(SeqStack *S_pointer)
{ if (S_pointer ->Top== MaxSize-1) return True;
else return False;
}
4.进栈
int Push_SeqStack(SeqStack *S_pointer,ElemType x)
{ if (Full_SeqStack(S_pointer)==True)
return OverFlow ;
else
{ S_pointer ->Top++ ;
S_pointer ->Element[S_pointer->Top]=x ;
return OK;
}
}
5.退栈
int Pop_SeqStack(SeqStack *S_pointer,ElemType
*x_pointer)
{ if (Empty_SeqStack(S_pointer)==True)
return UnderFlow ;
else
{ *x_pointer=S_pointer ->Element[S_pointer->Top];
S_pointer ->Top-- ;
return OK;
}
}
6.取栈顶元素
int GetTop_SeqStack(SeqStack *S_pointer,ElemType
*x_pointer)
{ if (Empty_SeqStack(S_pointer)==True)
return UnderFlow ;
else
{ *x_pointer=S_pointer ->Element[S_pointer->Top];
return OK;
}
}
7.清空一个栈
void SetNull_SeqStack(SeqStack *S_pointer)
{ S_pointer->Top=-1;
}
void main()
{ int i;
ElemType temp;
SeqStack ListStack;
Init_SeqStack(&ListStack);
for (i=1;i<=10;i++)
Push_SeqStack (&ListStack,i);
while (Empty_SeqStack(&ListStack)==False)
{ Pop_SeqStack (&ListStack,&temp);
printf(" %d",temp);
}
SetNull_SeqStack(&ListStack);
}