C语言栈爱吃窝窝头2023-11-302023-11-30//2020.9.23栈#include <stdio.h>#include <stdlib.h>#define N 20//定义顺序栈的类型typedef struct sqstack{ int *base; //栈底指针 int *top; //栈顶指针 int stacksize; //存储空间大小}sqs;sqs s; //定义一个顺序栈//初始化void initstack(){ s.base=(int *)malloc(N*sizeof(int)); if(!s.base) exit(0); s.top=s.base; //空栈 s.stacksize=N;}//入栈(插入元素)void push(int e){ if(s.top-s.base>=s.stacksize){ printf("栈满\n"); exit(0); /*s.base=(int *)realloc(s.base,(N+M)*sizeof(int)) if(!s.base) exit(0); s.top=s.base+s.stacksize; s.stacksize+=M; */ } *s.top=e; //插入 s.top++; //修改栈顶指针}//出栈(删除)int pop(){ int e; if(s.top==s.base){ printf("空栈\n"); exit(0); } s.top--;//修改栈顶指针 e=*s.top;//赋值 return e;}//数值转换void conversion(){ int n,x; initstack(); printf("请输入十进制数:"); scanf("%d",&n); while(n) { x=n%2; push(x); n=n/2; } printf("转换为二进制数:"); while(s.top!=s.base) printf("%d",pop()); printf("\n");}void main(){ int e,n; initstack(); printf("请输入入栈元素个数:"); scanf("%d",&n); printf("请输入入栈元素:"); for(int i=1;i<=n;i++){ scanf("%d",&e); push(e); } printf("返回删除的值:"); while(s.top!=s.base) printf("%d ",pop()); printf("\n"); conversion();}