资源描述:
《链式栈基本操作C语言实现学习代码.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、头文件#define_CRT_SECURE_NO_WARNINGS#include#include#definedatatypeintstructstack1{intnum;datatypedata;structstack1*pnext;};typedefstructstack1stack;stack*init(stack*phead);//初始化stack*push(stack*phead,intnum,datatypedata);//压栈stack*pop(stack*ph
2、ead,stack*tnode);//出栈stack*freeall(stack*phead);//清空voidprintf1(stack*phead);//打印源文件#define_CRT_SECURE_NO_WARNINGS#include#include#include"abc.h"stack*init(stack*phead){returnNULL;}stack*push(stack*phead,intnum,datatypedata){stack*p=(stack*)
3、malloc(sizeof(stack));p->num=num;p->data=data;p->pnext=NULL;if(phead==NULL){phead=p;returnphead;}else{stack*q=phead;while(q->pnext!=NULL){q=q->pnext;}q->pnext=p;returnphead;}}voidprintf1(stack*phead){if(phead==NULL){return;}else{printf("本结点地址=%p,后一个结点地址=%p,结点编
4、号=%d,结点数据=%d",phead,phead->pnext,phead->num,phead->data);printf1(phead->pnext);//printf("本结点地址=%p,后一个结点地址=%p,结点编号=%d,结点数据=%d",phead,phead->pnext,phead->num,phead->data);}}stack*pop(stack*phead,stack*tnode){if(phead==NULL){returnNULL;}elseif(phead->pnext==N
5、ULL){tnode->num=phead->num;tnode->data=phead->data;free(phead);phead=NULL;returnphead;}else{stack*p=phead;stack*q=phead->pnext;while(q->pnext!=NULL){p=q;q=q->pnext;}p->pnext=NULL;tnode->num=q->num;tnode->data=q->data;free(q);returnphead;}}stack*freeall(stack*p
6、head){if(phead==NULL){returnNULL;}else{stack*p=phead;stack*q=NULL;while(p!=NULL){q=p->pnext;free(p);p=q;//q=q->pnext;}returnNULL;}}测试代码#define_CRT_SECURE_NO_WARNINGS#include#include#include"abc.h"voidmain(){stack*pp=NULL;//init(pp);//pp=push
7、(pp,1,10);//pp=push(pp,2,11);//pp=push(pp,3,12);//pp=push(pp,4,13);//pp=push(pp,5,14);//printf("入栈之后");//printf1(pp);//printf("出栈之后");///*pp=freeall(pp);//printf1(pp);*///while(pp!=NULL)//{//stack*p=(stack*)malloc(sizeof(stack));//pp=pop(pp,p);//printf1(pp
8、);//printf("出栈的数据%d,%d",p->num,p->data);//}intnum=10,i=0;while(num){i++;pp=push(pp,i,num%2);num=num/2;}printf1(pp);system("pause");}