用C++链栈编辑十进制对十六进制的转化

输入一个10进制数转化为十六进制 其中运用链栈来转化
2025-03-23 15:39:54
推荐回答(1个)
回答1:

#include 
#include
typedef int DataType; 
typedef struct LinkStack{  
     DataType data;  
     struct LinkStack *next; 
}LinkStack;
void IniStack(LinkStack *top)//初始化

     top->next=NULL; 
}
void Push(LinkStack *top,DataType x) 

 LinkStack *p; 
    p=(LinkStack*)malloc(sizeof(LinkStack));
    p->next=top->next;
    top->next=p;
    p->data=x; 
}
int Pop(LinkStack *top) 
{  
 LinkStack *p; 
    int x;
    p=top->next;
    top->next=p->next;
    x=p->data;  free(p);
    return x; 
}
int main() 
{  
      int num;  
   LinkStack *top;
      printf("请输入你要转换的数字:");  
      scanf("%d",&num); 
      top=(LinkStack*)malloc(sizeof(LinkStack));  
      IniStack(top); 
      while(num!=0){  
           Push(top,num%16);
           num=num/16;
      }
      printf("转化后的数为:");
      while(top->next!=NULL){   
           num=Pop(top);
     if(num<10)
      printf("%d",num);
     else
     {
      num-=10;
      printf("%c",'A'+num);
     }
      }
      printf("\n"); 
   return 0;
}
//运行截图: