资源描述:
《堆栈和队列基本函数》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、一•顺序栈1.宏定义#include#include#defineMAXSIZE****#definedatatype****2.结构体typcdcfstruct{datatypedata[MAXS!ZEJ;inttop;}Seqstack;3.基本函数Seqstack*Init_Seqstack()/*置空栈函数(初始化)1•先决条件:无;2•函数作用:首先建立栈空间,然后初始化栈顶指针,返回栈s的地址*/{Seqstack*s;s=(Seqstack*)malloc(sizeof(Seqstack));s->to
2、p=-1;returns;}intEmpty_Seqstack(Seqstack*s)/*判栈空函数1・先决条件:初始化顺序栈;2•函数作用:判断栈是否为空,空返回1,不空返回0可{if(s->top==-l)return1;elsereturn0;}intPush_Seqstack(Seqstack*s,datatypex)/*入栈函数1•先决条件:初始化顺序栈2•函数作用:将数据x入栈,栈满则不能,成功返回1,因栈满失败返回()*/{if(s->top==MAXSIZE-l)return0;s->top=s->top+1;s->data[s->top
3、]=x;return1;intPop_Seqstack(Seqstack*s,datatype*x)严出栈函数1•先决条件:初始化顺序栈2•函数作用:从栈中岀一个数据,并将其存放到x中咸功返回1,因栈空失败返回0*/{if(s->top==-l)return0;*x=s->data[s->top];s->top—;return1;}intTop_Seqstack(Seqstack*s,datatype*x)/*取栈顶元素函数1•先决条件:初始化顺序栈2•函数作用:取栈顶元素,并把其存放到x中,成功返回1,因栈空失败返回0*/{if(s->top==-l)
4、return0;*x=s->data[s->top];return1;}intPrintf_Seqstack(Seqstack*s)/*遍历顺序栈函数1•先决条件:初始化顺序栈2•函数作用:遍历顺序栈,成功返回P/{inti,j=0;for(i=s->top;i>=0;i-){printf("%dn,s->data[i]);/*因datatype不同而不同*/j++;if(j%!0==0)printf(',M);}printf(nn);return1;}intConversation_Seqstack(intN,intr)/*数制转换函数(顺序栈
5、)1•先决条件:具有置空栈,入栈,出栈函数2•函数作用:将N转换为r进制的数*/{Scqstack*s;datatypex;printf(n%d转为%d进制的数为:“,N,r);/*以后可以删除去*/s=Init_Seqstack();doPush_Seqstack(s$N%r);N=N/r;}whilc(N);while(Pop_Seqstack(s,&x)){if(x>=10)/*为了能转为十进制以上的*/printf(”%c”,x+55);elseprintf(”%d”,x);)free(s);/*释放顺序栈*/printf(nM);retur
6、n1;}4.主函数intmain(){Scqstack*s;intchoice;datatypex;do{printfCU.置空栈2•判栈空3•入栈4•出栈5•収栈顶元素6•遍历7•退出「);printf(H请输入选择(1〜7):”);scanf(H%d'&choice);getchar();switch(choice)case1:s=Init_Seqstack();if(s)printf("B空栈成功!H);break;case2:if(Empty_Seqstack(s))printf(”此为空栈An”);elseprintf(''此不为空栈.
7、M);;break;case3:printf("请输入一个整数:”);scanf(”%d”,&x);if(Push_Seqstack(s,x))printf(n入栈成功An”);elseprintf(',栈已满,无法入栈AnM);;break;case4:if(Pop_Seqstack(s,&x))printf("出栈成功,出栈元素为:%d”,x);elseprintf(”出栈失败,因栈为空.u);break;case5:if(Top_Seqstack(s,&x))print”取栈顶元素成功,栈顶元素为:%d”,x);elseprintf
8、(“取栈顶元素失败,因栈为空AiT);break;case6:Printf_Se