栈的链式实现1

来源:互联网 发布:域名微信分享防封技术 编辑:程序博客网 时间:2024/06/07 02:20

本节给出测试代码及说明。

int main(void){#define MAX_SIZEMAX_NODE#define VAL_RANGE10000int 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 0printf("\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);elsebreak;}printf("\n\ndump stack data: \n");dump_stack(pStack);//destory the stack;destory_stack(pStack);printf("\nmain end!\n");return 0;}

栈的实现比较简单,一般可以用数组或者链表实现。数组实现的优点是每个元素的地址是连续的,缺点是必须先知道栈的节点个数;链式实现的栈可以动态增长,灵活定义数据域的类型(void *data),在实际使用时只要将"void *"类型指定需要的类型即可。


完全代码: 下载