Metoor 的专栏



#include "stdio.h"#include "stdlib.h"

#define Incrise_Size 10

typedef struct stack{int* top;int* base;int MaxSize;}sqStack;void CreatStack(sqStack*Stack,int Size){Stack->base=(int *)malloc(Size*(sizeof(sqStack)));if(!Stack->base){printf("内存分配失败!\n");exit(1);}Stack->MaxSize=Size;Stack->top=Stack->base;}

void Push(sqStack* Stack,int x){if((Stack->top-Stack->base)==Stack->MaxSize){Stack->base=(int*)realloc(Stack->base,(Stack->MaxSize+Incrise_Size)*sizeof(sqStack));Stack->MaxSize+=Incrise_Size;if(!Stack->base){ printf("内存分配失败!\n"); exit(1);}}*(Stack->top)=x;Stack->top++;}

void Pop(sqStack* s,int* n){if(s->top==s->base){ printf("这是一个空栈!\n"); exit(1);}*n=*–(s->top);}

int StackLength(sqStack* s){return (s->top-s->base);}

void ClearStack(sqStack* s){s->top=s->base;}

void DestoryStack(sqStack* s){free(s->base);printf("栈已经被销毁!\n");

}

void Printf(sqStack* s){int i,l=StackLength(s);for(i=1;i<=l;i++)printf("%d ",*–(s->top));printf("\n");}

void main(){int i,n=0;sqStack s; CreatStack(&s,6);for(i=1;i<=3;i++)Push(&s,i);printf("length=%d\n",StackLength(&s));//Printf(&s);

/*for(i=1;i<=3;i++){Pop(&s,&n);printf("n=%d ",n);printf("\n");}*///ClearStack(&s);DestoryStack(&s);

}

,别为荒漠的艰难而哭泣,只为奔流入海功成名就那一天,

Metoor 的专栏

相关文章:

你感兴趣的文章:

标签云: