企业级数据结构-顺序栈实现
2015-01-20 15:58
281 查看
Stack基本概念
栈是一种 特殊的线性表栈仅能在线性表的一端进行操作
栈顶(Top):允许操作的一端
栈底(Bottom):不允许操作的一端
Stack的常用操作
创建栈销毁栈
清空栈
进栈
出栈
获取栈顶元素
获取栈的大小
#ifndef _MY_STACK_H_
#define _MY_STACK_H_
typedef void Stack;
Stack* Stack_Create();
void Stack_Destroy(Stack* stack);
void Stack_Clear(Stack* stack);
int Stack_Push(Stack* stack, void* item);
void* Stack_Pop(Stack* stack);
void* Stack_Top(Stack* stack);
int Stack_Size(Stack* stack);
#endif //_MY_STACK_H_
栈的顺序存储设计与实现
1、基本概念
2、设计与实现
下面栈实现代码是根据线性表之线性存储实现,如果需要参考,请把前几篇线性表之线性存储实现的代码拷贝,这里只是基于线性表写的Seqstack.h
// seqstack.h #ifndef _MY_SEQSTACK_H_ #define _MY_SEQSTACK_H_ typedef void SeqStack; SeqStack* SeqStack_Create(int capacity); void SeqStack_Destroy(SeqStack* stack); void SeqStack_Clear(SeqStack* stack); int SeqStack_Push(SeqStack* stack, void* item); void* SeqStack_Pop(SeqStack* stack); void* SeqStack_Top(SeqStack* stack); int SeqStack_Size(SeqStack* stack); int SeqStack_Capacity(SeqStack* stack); #endif //_MY_SEQSTACK_H_
Seqstack.c
#include "stdio.h" #include "stdlib.h" #include "string.h" #include "seqstack.h" #include "seqlist.h" //线性表的顺序存储头文件 SeqStack* SeqStack_Create(int capacity) { return SeqList_Create(capacity); } void SeqStack_Destroy(SeqStack* stack) { SeqList_Destroy(stack); } void SeqStack_Clear(SeqStack* stack) { SeqList_Clear(stack); } //往栈中放元素,相当于向线性表中放元素 int SeqStack_Push(SeqStack* stack, void* item) { return SeqList_Insert(stack, item, SeqList_Length(stack)); } //从栈中弹出元素,相当于从线性表中删除元素 void* SeqStack_Pop(SeqStack* stack) { return SeqList_Delete(stack, SeqList_Length(stack) -1); } void* SeqStack_Top(SeqStack* stack) { return SeqList_Get(stack, SeqList_Length(stack)-1);; } int SeqStack_Size(SeqStack* stack) { return SeqList_Length(stack); } int SeqStack_Capacity(SeqStack* stack) { return SeqList_Capacity(stack); }
测试.c
#include "stdio.h" #include "stdlib.h" #include "string.h" #include "seqstack.h" void main() { int a[20], i = 0; int *pTmp = NULL; SeqStack* stack = NULL; stack = SeqStack_Create(20); for (i=0; i<10; i++) { a[i] = i+1; //SeqStack_Push(stack, &a[i]); SeqStack_Push(stack, a+i); } pTmp = (int *)SeqStack_Top(stack); printf("top:%d \n", *pTmp); printf("capacity:%d \n", SeqStack_Capacity(stack)); printf("size:%d \n", SeqStack_Size(stack)); //元素出栈 while (SeqStack_Size(stack) > 0) { printf("pop:%d \n", *((int *)SeqStack_Pop(stack)) ); } SeqStack_Destroy(stack); system("pause"); }
相关文章推荐
- 数据结构的C实现_顺序栈
- 企业级数据结构-栈的链式存储设计与实现
- 数据结构学习系列四-顺序栈(c语言实现)
- 数据结构----顺序栈实现逆波兰表达式(后缀表达式)求解
- 数据结构--顺序栈实现(c语言)
- 数据结构学习系列五-顺序栈(c++实现且应用模板)
- C++数据结构:栈——顺序栈实现的之二:两栈共享空间
- 【数据结构】PHP实现查找表
- 【C++源代码】文件夹比较、文件比较的数据结构,定义和实现
- 利用java实现数据结构中常用的插入排序和快速排序算法
- 利用asp.net 2.0构建企业级门户平台(2、实现页面请求的调度)
- 数据结构复习篇:用栈实现递归
- 数据结构中用C#实现"表达式计算"
- 多种数据结构的Java实现(精)
- C语言-数据结构-二叉排序树与平衡树算法实现及演示
- 用C#的类实现数据结构的堆栈算法
- javascript实现基本数据结构(一)冒泡排序
- 企业级服务器设计与实现经验之系统框架(二)--功能/应用服务器主体框架
- 企业级服务器设计与实现经验之插件系统--功能插件
- 堆栈数据结构的实现~