泛型的stack结构
1 以int型为基础设计1个栈
1.1 定义栈结构体
typedef struct tag_Stack{
void *elems;
uint8_t logicLen;
uint8_t allocLen;
uint8_t elemSize;
}StackTypeDef;
StackTypeDef S;
1.2 打印栈元素
int型的打印:
void print_IntStack(StackTypeDef *s)
{
uint8_t i;
int *dat = (int *)s->elems;
if(s->logicLen == 0) {
printf("<NULL>\r\n");
}else{
for(i = 0; i < s->logicLen; i++){
printf("elem[%d] = %d\r\n", i, dat[i]);
}
}
}
float型的打印:
void print_FloatStack(StackTypeDef *s)
{
uint8_t i;
float *dat = (float *)s->elems;
if(s->logicLen == 0) {
printf("<NULL>\r\n");
}else{
for(i = 0; i < s->logicLen; i++){
printf("elem[%d] = %f\r\n", i, dat[i]);
}
}
}
1.3 栈操作的实现
void StackNew(StackTypeDef *s, uint8_t elem_size)
{
assert(elem_size > 0);
s->logicLen = 0;
s->allocLen = 4;
s->elemSize = elem_size;
s->elems = malloc(s->allocLen * s->elemSize);
assert(s