栈的C语言实现(数组)

来源:互联网 发布:搜狗优化 编辑:程序博客网 时间:2024/05/01 17:12
//栈的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;}

0 0
原创粉丝点击