#define INIT_LONG 50 //栈的初始长度 #define CHANGE_LONG 10 //栈长度的增量
//堆栈的结构体。栈底,栈顶指针和栈的初始长度。 typedef struct Stock {
int *base;//栈中的指针。 int *top; int Stock_size; }SqStock;
//建立一个堆栈。
void InitStock(SqStock & L) {
L.base=(int*)malloc(sizeof(int)*INIT_LONG); if(L.base) {
L.top=L.base;
L.Stock_size=INIT_LONG; } else
printf(\"堆栈建立失败!\\n\"); }
//进栈操作。
void Push(SqStock &L,int e) {
if(L.top-L.base>=L.Stock_size) {
L.base=(int*)realloc(L.base,(L.Stock_size+CHANGE_LONG)*sizeof(int)); if(L.base) {
L.top=L.Stock_size+L.base; L.Stock_size+=CHANGE_LONG; } else
printf(\"重新开辟失败!\\n\"); return; } }
*L.top= e; L.top++; return; }
{
//出栈操作
void Pop(SqStock &L,int &e) {
if(L.base==L.top) {
printf(\"栈为空!\\n\"); return; } L.top--; e=*L.top; printf(\"%-4d\return; }
//数值转换。
void conversion(SqStock &S) {
int N; int Deep;
printf(\"输入要转换的值:\\n\"); scanf(\"%d\printf(\"输入基数:\\n\"); scanf(\"%d\while(N!=0)
}
{ }
Push(S,N%Deep); N=N/Deep;
void main() { }
int e; SqStock S; InitStock(S); conversion(S);
printf(\"输出转换后的数:\\n\");//输入十进制数 while(S.top!=S.base) { }
printf(\"\\n\");
Pop(S,e);
因篇幅问题不能全部显示,请点此查看更多更全内容