C实现的泛型栈
来源:互联网 发布:稳定性测试软件 编辑:程序博客网 时间:2024/05/15 09:06
typedef struct{
void *elems; //栈底指针int loglen; //已经使用的长度int alloclen; //已经申请的长度int elemSize; //单个元素的长度
}stack;
void StackNew(stack *s, int elemSize)
{
assert(elemSize > 0);s->elemSize = elemSize;s->loglen = 0;s->alloclen = 4;s->elems = malloc(4 *elemSize);assert(s->elems != NULL);
}
void StackPush(stack *s, void *elemAdd)
{
//栈满则采用加倍策略增长
if (s->loglen == s->alloclen){StackGrow(s);}void *target = (char *)(s->elems) + loglen * (s->elemSize);memcpy(target, elemAdd, s->elemSize);s->loglen++;
}
static void StackGrow(stack *s)
{
s->alloclen *= 2;
s->elems = realloc(s->elems, (s->alloclen) * (s->elemSize));
}
void StackPop(stack *s, void *elempop)
{
//获取栈顶元素指针
void *source = (char*)(s->elems) + (s->loglen - 1 ) *(s->elemSize);memcpy(elempop, source, s->elemSize);s->loglen--;
}
0 0
- C实现的泛型栈
- C泛型栈的实现
- C实现的泛型栈
- C实现的泛型栈
- [库]C实现的泛型栈
- 泛型栈-C语言的简单实现
- [C/C++]汉诺塔的实现
- 堆栈的C实现
- C的类实现
- c库函数的实现
- c实现的urlencode
- Base64的 c实现
- 哈希表的C实现
- C中泛型的实现
- 哈希表的C实现
- C实现的五子棋
- C实现的俄罗斯方块
- C 实现的Music
- 网络子系统85_inet协议族-l3向上
- Java缓存机制
- solr大量索引信息导致搜索变慢
- NEFU 2 猜想
- smart mobile with vehicle
- C实现的泛型栈
- 共享内存(指针bug)
- Android 资源(resource)学习小结
- 乡村爱情圆舞曲全集高清迅雷下载
- 3_List和Set集合(上)
- poj1107 W's Cipher(字符串)
- 通过数组指针取数组元素的值
- HDU2079
- 帝国CMS系统标签