本文共 1639 字,大约阅读时间需要 5 分钟。
pra.c
#include "pra.h"#include#include #include //栈的初始化void StackInit(Stack* ps){ ps->array = (Stack*)malloc(sizeof(Stack) * 6); ps->capacity = 6; ps->size = 0;}//插入元素void StackPush(Stack* ps, DataType data){ assert(ps); if (ps->size==ps->capacity) { ps->array = (DataType*)realloc(ps->array, sizeof(DataType) * ps->capacity * 2); ps->capacity = ps->capacity * 2; } ps->array[ps->size] = data; ps->size += 1;}//删除元素void StackPop(Stack* ps){ assert(ps); if (StackEmpty==1) return NULL; (ps->size)-=1;}//返回栈顶元素DataType StackTop(Stack* ps){ assert(ps); return ps->array[(ps->size) - 1];}//判断栈中元素个数int StackSize(Stack* ps){ assert(ps); return ps->size;}//判断栈是否为空,空就返回1,非空返回0int StackEmpty(Stack* ps){ assert(ps); if (0 == ps->size) return 1; return 0;}//销毁栈void StackDestroy(Stack* ps){ assert(ps); free(ps->array); ps->capacity = 0; ps->size = 0;}/测试函数/void TestStack(){ Stack s; StackInit(&s); StackPush(&s, 1); StackPush(&s, 2); StackPush(&s, 3); StackPush(&s, 4); StackPush(&s, 5); StackPush(&s, 6); StackPush(&s, 7); printf("size = %d\n", StackSize(&s)); printf("top = %d\n", StackTop(&s)); StackPop(&s); StackPop(&s); StackPop(&s); printf("size = %d\n", StackSize(&s)); printf("top = %d\n", StackTop(&s)); StackDestroy(&s);}
pra.h
#pragma oncetypedef int DataType;typedef struct Stack{ DataType* array;//用数组来模拟栈的特点 int capacity;//表示栈的容量 int size; // 表示栈中有多少个元素---栈顶}Stack;void StackInit(Stack* ps);void StackPush(Stack* ps, DataType data);void StackPop(Stack* ps);DataType StackTop(Stack* ps);int StackSize(Stack* ps);int StackEmpty(Stack* ps);void StackDestroy(Stack* ps);//void TestStack();
转载地址:http://etyrz.baihongyu.com/