当前位置 : 主页 > 编程语言 > c语言 >

栈(三)

来源:互联网 收集:自由互联 发布时间:2023-08-28
#include stdio.h#include stdlib.h#include assert.h#include stdbool.htypedef int STDataType;typedef struct Stack {STDataType* arr;int top;int capacity;}ST;void StackInit(ST* ps)//初始化栈{assert(ps);//避免传过来的地址为空STData

#include <stdio.h> #include <stdlib.h> #include <assert.h> #include <stdbool.h> typedef int STDataType; typedef struct Stack { STDataType* arr; int top; int capacity; }ST; void StackInit(ST* ps)//初始化栈 { assert(ps);//避免传过来的地址为空 STDataType* tmp = (STDataType*)malloc(sizeof(STDataType*) * 4); if (tmp == NULL) { perror("malloc"); exit(-1); } ps->arr = tmp; ps->top = 0; ps->capacity = 4; } void StackDestroy(ST* ps)//销毁栈 { assert(ps); free(ps->arr); ps->arr = NULL; ps->capacity = ps->top = 0; } void StackPush(ST* ps, STDataType x)//压栈 { assert(ps); if (ps->capacity == ps->top) { STDataType* tmp = (STDataType*)realloc(ps->arr, sizeof(STDataType*) * 2 * ps->capacity); if (tmp == NULL) { perror("realloc"); exit(-1); } ps->arr = tmp; ps->capacity = 2 * ps->capacity; } ps->arr[ps->top] = x; ps->top++; } void StackPrint(ST* ps)//打印栈中元素 { int i = 0; for (i = 0; i < ps->top; i++) { printf("%d ", ps->arr[i]); } printf("\n"); } void StackPop(ST* ps)//出栈 { assert(ps); assert(ps->top > 0); //可以使用 assert(!StackEmpty); ps->top--; } bool StackEmpty(ST* ps)//判断是否为空 { assert(ps); if (ps->top == 0) return true; return false; //也可以直接使用return ps->top == 0; } STDataType StackTop(ST* ps)//返回栈顶元素 { assert(ps); assert(ps->top > 0);//可以使用 assert(!StackEmpty); assert(!StackEmpty(ps)); return ps->arr[ps->top - 1]; }

int StackSize(ST* ps)//统计栈中元素个数 { assert(ps); return ps->top; } void TestStack() { ST st; StackInit(&st); StackPush(&st, 1); StackPush(&st, 2); StackPush(&st, 3); StackPush(&st, 4); StackPush(&st, 5); StackPush(&st, 6); StackPrint(&st);

StackPop(&st);
StackPop(&st);
StackPop(&st);
StackPop(&st);
StackPrint(&st);

if (!StackEmpty(&st))
	printf("栈顶元素:%d\n栈中总的元素个数:%d\n", StackTop(&st),StackSize(&st));

StackDestroy(&st);

} int main() { TestStack(); return 0; }

【本文由: 响水网页设计公司 http://www.1234xp.com/xiangshui.html 欢迎留下您的宝贵建议】
上一篇:算法练习-day19
下一篇:没有了
网友评论