《链式栈基本操作C语言实现学习代码》由会员分享,可在线阅读,更多相关《链式栈基本操作C语言实现学习代码(5页珍藏版)》请在金锄头文库上搜索。
1、头文件#define _CRT_SECURE_NO_WARNINGS#include#include#define datatype intstruct stack1int num;datatype data;struct stack1 *pnext;typedef struct stack1 stack;stack *init(stack *phead);/初始化stack *push(stack *phead, int num, datatype data);/压栈stack *pop(stack *phead, stack *tnode);/出栈stack *freeall(stack
2、*phead);/清空void printf1(stack *phead);/打印源文件#define _CRT_SECURE_NO_WARNINGS#include#include#includeabc.hstack *init(stack *phead)return NULL;stack *push(stack *phead, int num, datatype data)stack *p = (stack *)malloc(sizeof(stack);p-num = num;p-data = data;p-pnext = NULL;if (phead = NULL)phead = p;r
3、eturn phead;elsestack *q = phead;while (q-pnext != NULL)q = q-pnext;q-pnext = p;return phead;void printf1(stack *phead)if (phead = NULL)return;elseprintf(本结点地址=%p,后一个结点地址=%p,结点编号=%d,结点数据=%dn, phead, phead-pnext, phead-num, phead-data);printf1(phead-pnext);/printf(本结点地址=%p,后一个结点地址=%p,结点编号=%d,结点数据=%dn
4、, phead, phead-pnext, phead-num, phead-data);stack *pop(stack *phead, stack *tnode)if (phead = NULL)return NULL;else if (phead-pnext = NULL)tnode-num = phead-num;tnode-data = phead-data;free(phead);phead = NULL;return phead;elsestack *p = phead;stack *q = phead-pnext;while (q-pnext!= NULL)p = q;q =
5、q-pnext;p-pnext = NULL;tnode-num = q-num;tnode-data = q-data;free(q);return phead;stack *freeall(stack *phead)if (phead = NULL)return NULL;elsestack *p = phead;stack *q=NULL;while (p!= NULL)q = p-pnext;free(p);p = q; /q = q-pnext;return NULL;测试代码#define _CRT_SECURE_NO_WARNINGS#include#include#includ
6、eabc.hvoid main()stack *pp=NULL;/init(pp);/pp = push(pp, 1, 10);/pp = push(pp, 2, 11);/pp = push(pp, 3, 12);/pp = push(pp, 4, 13);/pp = push(pp, 5, 14);/printf(入栈之后n);/printf1(pp);/printf(出栈之后n);/*pp = freeall(pp);/printf1(pp);*/while (pp != NULL)/ stack *p = (stack *)malloc(sizeof(stack);/ pp = pop(pp, p);/ printf1(pp);/ printf(出栈的数据n%d,%dn, p-num, p-data);/int num = 10, i = 0;while (num)i+;pp = push(pp, i, num % 2);num = num / 2;printf1(pp);system(pause);