Bootstrap

c语言顺序表实现栈

main.c

#include "seqStack.h"
int main(int argc, const char *argv[])
{
	StackPtr stack=create();
	push(stack,3);
	push(stack,8);
	push(stack,13);
	push(stack,33);
	push(stack,60);
	push(stack,55);
	display(stack);
	pop(stack);
	display(stack);
	return 0;
}

seqStack.c

#include "seqStack.h"

//创建栈区
StackPtr create(){
	StackPtr stack=(StackPtr)malloc(sizeof(Stack));
	if(stack==NULL){
		printf("创建失败\n");
		return NULL;
	}
	stack->data=(datatype *)malloc(sizeof(datatype)*MAX);
	if(stack->data==NULL){
		printf("创建失败\n");
		return NULL;
	}
	bzero(stack->data,sizeof(datatype)*MAX);
	stack->top=0;
	printf("创建成功\n");
	return stack;
}

//判空
int is_empty(StackPtr stack){
	return stack->top==0;
}

//判满
int is_full(StackPtr stack){
	return stack->top==MAX;
}

//入栈
void push(StackPtr stack,datatype e){
	if(stack==NULL||is_full(stack)){
		printf("入栈失败\n");
		return;
	}
	stack->data[stack->top++]=e;
	printf("入栈成功\n");
}

//出栈
void pop(StackPtr stack){
	if(stack==NULL){
		printf("出栈失败\n");
		return;
	}
	stack->data[--stack->top]=0;
	printf("出栈成功\n");
}

//遍历栈
void display(StackPtr stack){
	if(stack==NULL){
		printf("遍历失败\n");
		return;
	}
	int length=stack->top;
	while(length--){
		printf("%d\t",stack->data[length-1]);
	}
	printf("\n");
}

//获取栈顶元素
datatype get_top(StackPtr stack){
	if(stack==NULL||is_empty(stack)){
		printf("获取失败\n");
		return NULL;
	}
	return stack->data[stack->top-1];
}
//求栈的大小
int stack_size(StackPtr stack){
	if(stack==NULL){
		printf("获取失败\n");
		return -1;
	}
	return stack->top;
}

//销毁栈
void destroy(StackPtr stack){
	if(stack!=NULL){
		if(stack->data!=NULL){
			free(stack->data);
			stack->data==NULL;
		}
		free(stack);
		stack==NULL:
		printf("销毁成功\n");
	}	
}

seqStack.h

#ifndef SEQSTACK
#define SEQSTACK
#include <myhead.h>

typedef int datatype;
#define MAX 10

typedef struct SeqStack{
	datatype *data;
	int top;
}Stack,*StackPtr;

//创建栈区
StackPtr create();

//判空
int is_empty(StackPtr stack);

//判满
int is_full(StackPtr stack);

//入栈
void push(StackPtr stack,datatype e);

//出栈
void pop(StackPtr stack);

//遍历栈
void display(StackPtr stack);

//获取栈顶元素
datatype get_top(StackPtr stack);
//求栈的大小
int stack_size(StackPtr stack);

//销毁栈
void destroy(StackPtr stack);

#endif

;