#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
typedef int SElemType;
//顺序栈的存储结构
typedef struct
{
SElemType *base;
SElemType *top;
int stacksize; //可用最大容量
}SqStack;
//初始化
void InitStack(SqStack *S)
{
S->base = (SElemType*)malloc(MAXSIZE * sizeof(SElemType));
if (!S->base)
exit(1);
S->top = S->base;
S->stacksize = MAXSIZE;
}
//入栈
int Push(SqStack *S, SElemType e)
{
if (S->top - S->base >= S->stacksize) return 0; //栈满
*S->top = e;
S->top++; ///*s->top++=e;
return 1;
}
//出栈
int Pop(SqStack *S, SElemType &e)
{
if (S->top == S->base) return 0; //栈空
S->top--;
e = *S->top;
return 1;
}
int StackEmpty(SqStack *S)
{
SElemType e;
if (S->top == S->base) exit(1);
S->top--;
e = *S->top;
return e;
}
//取栈顶元素
SElemType GetTop(SqStack *S, SElemType &e)
{
if (S->top != S->base) //非栈空时返回
e = *(S->top - 1);
return e;//++会改变指针自身值,而-1不会改变
}
//遍历输出栈
void printStack(SqStack *S)
{
printf("栈底:");
SElemType *p = S->base;
while (p != S->top)
{
printf("%d ", *p);
p++;
}
printf("\n");
}
int menu() {
int a = 0;
while (1) {
printf("请选择一个功能号:\n");
printf("\t\t1:请输入一个十进制数。\n");
printf("\t\t2:请选择要转换的进制。\n");
printf("\t\t3:转换后的结果显示。\n");
printf("\t\t0:程序结束运行。\n");
if (a == 0) {
printf("退出程序。\n");
exit(1);
}
if (a<1 || a>4) {
printf("你选择功能号错误,请重新输入功能号。\n");
continue;
}
else {
return(a);
}
}
}
void main(int N, int r)
{
printf("********************功能选择********************\n");
SqStack *S;
InitStack(S);
int s;
int x = N, y = r;
while (1) {
s = menu();
if (s == 1) {
printf("请输入一个十进制数:\n"); ///创建初始表
scanf("输入的十进制数为:%d", x);
}
if (s == 2) {
printf("\n请选择要转换的进制:\n");
scanf("要转换成的进制为:%d", y);
break;
}
if (s == 3) {
int e;
while (N != 0)
{
Push(S, N%r);
}
printf("\n十进制数%d所对应的%d进制数是:", x, y);
while (!StackEmpty(S))
Pop(S, e);
printf("%d", e);
printf("\n");
}
break;
if (s == 0) {
printf("\t\t0:程序结束运行。\n");
exit(1);
}
}
}
SqStack *S =new SqStack; InitStack(S);
再main函数里,的确S没有初始化就用了
SqStack *S;
InitStack(S);
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y