1、return 1;int Pop_Seqstack(Seqstack *s,datatype *x) 严出栈函数1 先决条件:从栈中岀一个数据,并将其存放到x中咸 功返回1,因栈空失败返回0*/top=-l)* x=s-top;top;int Top_Seqstack(Seqstack *s,datatype *x)/*取栈顶元素函数1 先决条件:取栈顶元素,并把其存放到x中,成 功返回1,因栈空失败返回0*/int Printf_Seqstack(Seqstack *s)/*遍历顺序栈函数1 先决条件:遍历顺序栈,成功返回P/int i,j=0;for(i=s-top;i=0;i-)prin
2、tf(%d n,s-datai);/*因 datatype 不同而不同*/j+;if(j%!0=0)printf(,nM);printf(nnn);int Conversation_Seqstack(int N,int r)/*数制转换函数(顺序栈)1 先决条件:具有置空栈,入栈,出栈函数2函数作用:将N转换为r进 制的数*/Scqstack *s;datatype x;printf(n%d转为d进制的数为:“,N,r);/*以后可以删除去*/s=Init_Seqstack();doPush_Seqstack(s$N%r);N=N/r;whilc(N);while(Pop_Seqstack(s
3、,&x)if(x=10)/*为了能转为十进制以上的*/ printf(” c”,x+55);elseprintf(” d”,x);)free(s);/*释放顺序栈*/printf(nnM);4.主函数int main()int choice;doprintfCU.置空栈2 判栈空3 入栈4出栈5 収栈顶元素6 遍历7 退出);printf(H请输入选择(17):”);scanf(H%d&choice);getchar(); switch(choice) case 1:if(s)B 空栈成功!nH);break;case 2:if(Empty_Seqstack(s)printf(” 此为空栈An
4、”);此不为空栈.nM); case 3:请输入一个整数: scanf(” d”,&x); if(Push_Seqstack(s,x) printf(n 入栈成功An”);,栈已满,无法入栈 AnM);case 4:if(Pop_Seqstack(s,&出栈成功,出栈元素为:%dn”,x);printf(”出栈失败,因栈为空.nu);case 5:if(Top_Seqstack(s,&print”取栈顶元素成功,栈顶元素为:printf(“取栈顶元素失败,因栈为空AiT);case 6:Printf_Seqstack(s);case 7:printf(M 谢谢使用!n);brcak;defau
5、lt:输入错误,请重新输入!while(choice!=7);二链栈# includcnext=N U LL)int Push_Linkstack(Linkstack top.datatype x)八入栈函数1 先决条件:将数据x入栈,成功返回1,失败返回0引Stacknode *p;p=(Stacknode *)malloc(sizeof(Stacknode);p-data=x;next=top-next;top-ncxt=p;int Pop_Linkstack(Linkstack topdatatype *x)八出栈函数1 先决条件:若栈空退岀,若没空则将数据岀栈,并将其存 放到x中,成功
6、返回1,因栈空失败返回0*/Stacknode *p=top-*x=p-data;next=p-free(p);int Top_Linkstack(Linkstack top,datatypc *x)取栈顶元素并放到x中,成功返回1,因栈空失败返回0*/next=NULL)*x=top-next-int Printf_Linkstack(Linkstack top)/*遍历链栈函数1 先决条件:遍历链栈,成功返回1*/int j=0;while(p)printf(H%d ,p-data);if(j%10=0)p=p-printf(HnM);int Conversation_Linkstack(
7、int N,int r)/*数制转换函数(链栈)1 先决条件:将N转换为r进制 的数*/printf(”d转为d进制的数为:,N,r);top=Init_Linkstack();Push_Linkstack(top,N%r);while(N);while(Pop_Linkstack(top,&= 10)/*为了能转为十进制以上的*/printf(”c”,x+55);printf(H%dM,x);printf(,iiM);free(top);/*释放栈顶空间*/printfCl.置空栈2 判栈空3 入栈4出栈5 取栈顶元素6遍历7 退出W);printf(M请输入选择(17): getchar(
8、);if(top)nM);if(Empty_Linkstack(top)printf(”此为空栈An”);printfC 毗不为空栈.ncase 3:);scanf(”d”,&if(Push_Linkstack(top,x)printfC入栈成功An”);printfC 栈已满,无法入栈AnM);if(Pop_Linkstack(top,&printfC*出栈成功,出栈元素为:%dn,x); elseprintfC* Hj 栈失败,因栈为空.n*);if(Top_Linkstack(top,&printfC栈顶元素成功,栈顶元素为:dn”,x);printf(”取栈顶元素失败,因栈为空An”)
9、; break;Printf_Linkstack(top);printf(M谢谢使用!defai山:prinlf(输入错课,请重新输入!n”);whilc(choicc!三顺序队列1.宏定义#includefront=q-rear=MAXSIZE-1;num=();return q;int In_Sequeue(Sequeue *q,datatype x)严入队函数1先决条件:初始化顺序队列2函数作用:将数据x入队到q中,成功返回1,因队满 失败返回0*/if(q-num=MAXSIZE)队满An*);/*可视情况删除此句*/rear=(q-rear+ 1)%MAXSIZE;datafq-re
10、ar=x;num+;int Front_Sequeue(Sequeue *q3atatype *x)/*取队头元素函数1 先决条件:初始化顺序表2函数作用:取队头元素并将其存放到x中咸功 返回1,因队空而失败返回0旬num=0)printf(H队空.);/*町视怙:况删除此句旬 return 0;*x=q-dataq-front+1;int Out_Sequeue(Sequeue datatype *x)/*出队函数1先决条件:将数据x入队到q中,成功返回1,因队空 失败返回0*/printf(”队空.n“);front=(q-front+ 1)%MAXSIZE;* x=q-front;qon
11、um;int Empty_Sequeue(Sequeue *q)/*判空函数1先决条件:是空返回1,非空返回0*/int PrintfLSequeue(Sequeue *q)/*遍历函数1先决条件:遍历输岀所有数据引int i,j=q-front+l,n=q-num;for(i=0;idataj);/*因 datatype 数据不同而不同*/j=j%MAXSIZE;printf(niiM);4 主函数 datatype x; do /* f I fixW * f next=p;int Empty_Lqueue(Lqueue *q)/*判空函数1 先决条件:front=q-rear)int Fr
12、ont_Lqueue(Lqueue *q,datatype *x)取队头元素并将其存放到x中,成功 返回1,因队空而失败返回0*/if(Empty_Lqueue(q)printf(”队空.n ”) ;front-int Out_Lqueue(Lqueue datatype *x)/*出队函数1 先决条件:将数据x入队到q中,成功返回1,因队空失 败返回0*/Qnodc *p;p=q-next=p next;ncxt=NULL)rear=q-front;int Printf_Lqueue(Lqueue *q)/*遍历函数1 先决条件:遍历输出所有数据引for(p=q-p!=NULL;next)%
13、d ”,p-printf(” n”);4主函数 int choice;printfCl.初始化2 判队空3入队4出队5 取队头元6遍历7退出W);scanf(n%dH,&q=lnit_Lqueue();if(Empty_Lqucuc(q)if(In_Lqueue(q,x)if(Out_Lqueue(q,&x) printf(iTi队成功,出队元素为:printf(”出队失败,因队为空.nn);if(Front_Lqueue(q,&printf(”取队头元素成功,队头元素为:else printfCl队头元素失败,因队为空.n“);Printf_Lqueue(q);printf(H 谢谢使用!ii
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1