c泛型编程--栈
来源:互联网 发布:域名转让协议 编辑:程序博客网 时间:2024/06/03 07:15
最近在看编程范式,前半部分主要以C来介绍的,今天学习下栈~
typedef struct{void* elemstr;//存储栈中的元素int contentlen;//栈申请空间int loglength;//当前栈使用空间unsigned int size;//元素类型的大小}pstack;void InitStack(pstack *s,unsigned int size);void DestoryStack(pstack *s);void pushStack(pstack *s,void* elem);void popStack(pstack *s,void* elem);void InitStack(pstack *s, unsigned int size){s->size = size;s->contentlen = 4;//初始容器大小为4s->loglength = 0;s->elemstr = malloc(s->contentlen * size);assert(s->elemstr != NULL);}void DestoryStack(pstack *s){free(s->elemstr);}void pushStack(pstack *s, void* elem){if (s->loglength >= s->contentlen){s->contentlen *= 2;//每次以两倍扩展s->elemstr = realloc(s->elemstr, s->contentlen*s->size);//重新分配空间}void* temp = (char*)s->elemstr + s->loglength * s->size;memcpy(temp, elem, s->size);s->loglength++;}void popStack(pstack *s,void* elem){s->loglength--;void* temp = (char*)s->elemstr + s->loglength * s->size;memcpy(elem,temp,s->size);}
备注:
realloc的使用:检查malloc后续空间是否足够,足够则直接向后扩展,否则重新申请一块空间,并将原来的数据拷贝过来。
阅读全文
0 0
- c泛型编程--栈
- 《Essential C++》泛型编程
- c++stl泛型编程
- C++i泛型编程
- 面向对象编程与泛型编程---C++primer读书笔记
- Pure C++: 泛型编程,模板特殊化
- [ACM实验]C++STL泛型编程
- Essential c++,泛型编程风格读书笔记
- C/C++泛型编程(4)容器
- C语言实现泛型编程
- "Modern C++"为什么采用泛型编程
- C++:模板与泛型编程
- C++:泛型编程vector(排序)
- C++:泛型编程(题库重整)
- C++:泛型编程(众数问题)
- C语言实现泛型编程
- C++:泛型编程(国名排序)
- C++:泛型编程(单词数)
- js中传递特殊字符(+,&)的方法
- svm
- Spring bean的作用域
- android中RecyclerView的简单使用(三)——瀑布流
- gdb调试器基本使用方法(入门)程序如果已经宕掉如何调试
- c泛型编程--栈
- js-单例模式
- POJ1364 KING
- Tomcat下前端使用vue-resource向后台servlet发送数据中文乱码
- 【JavaSE系列-基础篇2】——面向对象编程概念之类
- jsp 一个简单的计数器
- 图像特征匹配总结
- java研发博客点击量
- 自定义控件之手势识别器的使用