数据结构之 栈(C语言实现)
来源:互联网 发布:网络信号增强器 编辑:程序博客网 时间:2024/04/23 17:40
数据结构之 栈(C语言实现)
1.栈的模型
栈(stack)是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈的顶(top)。对栈的基本操作有push(进栈)和pop(出栈),前者相当于插入,后者则是删除最后插入的元素。最后插入的元素可以通过使用top例程在执行pop之前进行考察。对空栈进行的pop或top一般被认为是栈ADT的错误。另一方面,当运行push时空间用尽是一个实现错误,但不是ADT错误。
2. 栈的数组实现
- stack.h文件
#ifndef _STACK_H_#define _STACK_H_#define EmptyTOS -1 //空栈#define MinStackSize 5 //栈的最小值typedef int elementType; //数据类型typedef struct stackRecord{ int capacity;//容量 int stackTop;//栈顶 elementType *array; }STACK;int isEmpty(STACK *s); //判空int isFull(STACK *s); //判满STACK *createStack(int maxElements); //栈的创建void disposeStack(STACK *s); //栈的释放void makeEmpty(STACK *s); //创建空栈void push(elementType element, STACK *s);//入栈elementType top(STACK *s); //返回栈顶元素void pop(STACK *s); //出栈elementType topAndTop(STACK *s); //出栈并返回栈顶元素#endif
- stack.c
#include <stdlib.h>#include <stdio.h>#include "stack.h"int isEmpty(STACK *s){ return (s->stackTop == EmptyTOS);}int isFull(STACK *s){ return (s->stackTop == s->capacity -1);}STACK *createStack(int maxElements){ STACK *s; if(maxElements < MinStackSize) { printf("Stack size si too small\n"); return NULL; } s = (STACK *)malloc(sizeof(struct stackRecord)); s->array = (elementType *)malloc(sizeof(elementType) * maxElements); s->capacity = maxElements; makeEmpty(s); return s;}void disposeStack(STACK *s){ if(s != NULL) { free(s->array); free(s); }}void makeEmpty(STACK *s){ if(s != NULL) { s->stackTop = EmptyTOS; }}void push(elementType element, STACK *s){ if(!isFull(s)) { s->stackTop++; s->array[s->stackTop] = element; } else { printf("full stack\n"); }}elementType top(STACK *s){ if(!isEmpty(s)) { return s->array[s->stackTop]; } else { printf("empty stack\n"); return 0; }}void pop(STACK *s){ if(!isEmpty(s)) s->stackTop--; else printf("empty stack\n");}elementType topAndTop(STACK *s){ if(!isEmpty(s)) { return s->array[s->stackTop--]; } else { printf("empty stack\n"); return 0; }}
0 0
- 数据结构之栈(C语言实现)
- 数据结构之 栈(C语言实现)
- 数据结构之---C语言实现括号匹配(栈实现)
- 数据结构C语言实现之顺序栈
- 数据结构C语言实现之链栈
- 数据结构之---C语言实现共享栈
- 数据结构之栈的c语言实现
- 数据结构之单链表(C语言实现)
- 数据结构之 队列(C语言实现)
- 数据结构之数组(C语言实现)
- 【数据结构】栈学习之数组实现(C语言)
- 数据结构--顺序栈实现(c语言)
- 数据结构C语言实现栈
- 数据结构.栈(C语言实现)
- 数据结构---栈C语言实现
- 数据结构栈C语言实现
- 【数据结构】数据结构C语言的实现(栈)
- 数据结构(C语言)读书笔记6:栈的应用之括号匹配的C代码实现
- 两种堆栈的理解
- UI国际化
- 《PHP核心技术与最佳实践》-Cookie-Session深入
- 优秀程序员
- TIFF坐标的转换,生成新的图像
- 数据结构之 栈(C语言实现)
- 端点描述符
- Makefile学习之ESP8266官方工程的Makefile
- 【bzoj3531】[Sdoi2014]旅行
- java之文件上传二(源码)
- MySQL分区表的局限和限制
- 后台截取字符串的长度
- chmod的使用以及文件的命名
- 数据库应用优化(1)