栈首先我们要明确其特点,栈的元素都是先进后出或者后进先出的
首先我们要利用c语言定义一个栈
typedf struct node{
datatype data;
strcut node *next;
}Stack;
创建一个栈的方法:
Stack * createStack();
清空栈
void StackEmpty(Stack*);
销毁一个栈的方法:
void destroyStack( Stack * stack);
判断栈是否为空
int IsEmpty(Stack*);
入栈
int pushstack(Stack *stack ,DataType data);
出栈
int PopStack(Stack*);
获取栈顶元素
DataType GetTopElement(Stack *)
各个方法的实现:
//创建一个栈
Stack * createStack(){
Stack * stack=(Stack*)malloc(sizeof(stack));
if(stack!=NULL){
stack->next=NULL;
return stack;
}
void StackEmpty(Stack * stack){
while(!IsEmpty(stack)){
popStack(stack); //将栈中元素全部弹出
}
}
}
void destroyStack(Stack *stack){
free(stack);
printf("now stack is destroyed ");
exit(0);
}
int IsEmpty(Stack* stack){
return (stack->next==0);
}
int PushStack(Stack* stack ,DataType data){
Stack* new=(Stack*)malloc(sizeof(Stack));
if(new!=NULL){
new->data=data;
new->next=stack->next;
stack->next=next;
return 1;
}
printf(“out of place PushStack”);
return 0;
}
int PopStack(Stack* stack){
Stack* tmpst;
if(!IsEmpty(stack))
{
tmpst=stack->next;
stack->next=tmpst->next;
free(tmpst);
return 1;
}
return 0;
}
时间有限先把整个栈的方法实现全部写出,下一节补充相关的栈的main
函数的具体调用,包含字符的入栈出栈操作。