本节给出测试代码及说明。
int main(void)
{
#define MAX_SIZE MAX_NODE
#define VAL_RANGE 10000
int i, val;
stack *pStack = NULL;
printf("enter %s:\n", __func__);
pStack = create();
if (pStack == NULL)
{
perror("create stack failed!\n");
return -1;
}
printf("\npush data:\n");
for (i = 0; i < MAX_SIZE; i ++)
{
if (i != 0 && i % LINE_NUM == 0)
printf("\n");
printf("%d\t", i);
push(pStack, &i);
}
#if 0
printf("\n\ndump stack %d data: \n", pStack->size);
dump_stack(pStack);
#endif
printf("\n\npop data:\n");
for (i = 0; i < MAX_SIZE; i ++)
{
if (i != 0 && i % LINE_NUM == 0)
printf("\n");
if (!pop(pStack, &val))
printf("%d\t", val);
else
break;
}
printf("\n\ndump stack data: \n");
dump_stack(pStack);
//destory the stack;
destory_stack(pStack);
printf("\nmain end!\n");
return 0;
}
栈的实现比较简单,一般可以用数组或者链表实现。数组实现的优点是每个元素的地址是连续的,缺点是必须先知道栈的节点个数;链式实现的栈可以动态增长,灵活定义数据域的类型(void *data),在实际使用时只要将"void *"类型指定需要的类型即可。
完全代码: 下载