C语言栈的问题帮忙解释下

2024年11月16日 20:40
有1个网友回答
网友(1):

#include 
#include 
#define StackInitSize 100
typedef struct
{ int data[StackInitSize];
int top;
} SeqStack;  //定义一个栈类型 
SeqStack *InitStack()  //初始化一个栈 
{ SeqStack *s;
s=(SeqStack *)malloc(sizeof(SeqStack));
if(s!=NULL)
{ s->top=-1;
return s;
}
else
{ printf("没空间\n");
exit(0);
}
}
int isempty(SeqStack *s)  //判断是否为空栈 
{ return (s->top==-1)?1:0;
}
void push(SeqStack *s,int x)  //进栈 
{ if(s->top==StackInitSize)
{ printf("栈满了");
exit(0);
}
else
{ s->top++;
s->data[s->top]=x;
}
return;
}
/*void push1(SeqStack *s,char x)   这段进栈的程序不要,栈的数据域类型为int 
{ if(s->top==StackInitSize)
{ printf("栈满了");
exit(0);
}
else
{ s->top++;
s->data[s->top]=x;
}
return;
}*/
int pop(SeqStack *s)   //出栈 
{ int temp;
if(isempty(s))
{ printf("kong");
exit(0);
}
else
{ temp=s->data[s->top];
s->top--;
return temp;
}
}
void conversion(int N,int r)  //进制转化 
{ SeqStack *s;
int x;
char c;
s=InitStack();
while(N!=0)
{ push(s,N%r);
N=N/r;
}
while(!isempty(s))
{ x=pop(s);
if (x<10)
printf("%d",x);
else
printf("%x",x);
}
printf("\n");
}
int main()
{ int X,r;
printf("输入十进制的整数:");
scanf("%d",&X);
while(X!=0)
{ printf("输入转换进制数:");
scanf("%d",&r);
printf("结果是:");
conversion(X,r);
printf("输入十进制的数:");
scanf("%d",&X);
}
}