//栈的C语言实现(数组)
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
#define EmptyStack -1
//栈的数组结构
typedef struct _STACK_ARRAY{
int size;
int capacity;
int top;
int *array;
}STACK_ARRAY;
//创建空栈
STACK_ARRAY *Create(int size){
STACK_ARRAY *stack;
stack=(STACK_ARRAY*)malloc(sizeof(STACK_ARRAY));
if(stack==NULL){
printf("创建失败!\n");
exit(-1);
}
else{
stack->array=(int*)malloc(sizeof(int)*size);
stack->size=size;
stack->capacity=0;
stack->top=EmptyStack;
}
}
//入栈
void Push(STACK_ARRAY *stack,int element){
if(stack->capacity==stack->size){
printf("栈已满!\n");
exit(-1);
}
else{
stack->array[++stack->top]=element;
stack->capacity++;
}
}
//出栈
void Pop(STACK_ARRAY *stack){
int *temp;
if(stack->top==EmptyStack){
printf("空栈!\n");
exit(-1);
}
else{
*temp=stack->array[stack->top];
stack->top--;
stack->capacity--;
}
}
//打印栈
void Printf(STACK_ARRAY *stack){
int i=0;
if(stack->top==EmptyStack){
printf("空栈!\n");
exit(-1);
}
else{
while(stack->top!=EmptyStack){
printf(" %d ",stack->array[stack->top--]);
}
printf("\n");
}
}
int main(int argc, char *argv[]) {
STACK_ARRAY *stack;
int i=0;
stack=Create(10);
while(i<5){
Push(stack,i++);
}
Printf(stack);
Pop(stack);
Printf(stack);
return 0;
}
栈的C语言实现(数组)
最新推荐文章于 2022-12-11 21:41:43 发布