数据结构基础——数值转换问题

问题描述:这是数据结构课程设计中对栈的基础应用,将十进制数N转换成D进制数。

PS:因为小杨同学最近学习了数据结构,就将这些分享给大家了!做的可能不是太好,欢迎留言指导呀!

这题最简单的方法是采用除D取余法。因为这个方法最先产生的余数是起转换结果得最低位,正好符合栈的“先进后出”的特别性质。

如:1348(10进制)=2504(8进制)

   N                                     N div 8                           N mod 8

1348                                   168                                     4

 168                                      21                                     0

  21                                        2                                      5

   2                                         0                                      2

核心数据结构:顺序栈

顺序栈:顺序栈是栈的顺序实现。顺序栈是指利用顺序存储结构实现的栈。采用地址连续的存储空间(数组)依次存储栈中数据元素,由于人栈和出栈运算都是在栈顶进行,而栈底位置是固定不变的,可以将栈底位置设置在数组空间的起始处;栈顶位置是随入栈和出栈操作而变化的,故需用一个整型变量top来记录当前栈顶元素在数组中的位置。

废话少说,上代码:

1.顺序栈定义

typedef struct 
{
    int data[SIZE];
    int top; 
}seqstack;

2.完整源代码

#include
#include
#include
#define SIZE 100
typedef struct 
{
    int data[SIZE];
    int top; 
}seqstack;
void main()
{	 
     int num,d,x,sum;
	 printf("请输入一个10进制数字: ");scanf("%d",&num);
	 printf("请输入要转换的进制:");scanf("%d",&d);
     seqstack *s;
     s=(seqstack *)malloc(sizeof(seqstack));
     s->top=-1;
     while(num)//按顺序进栈
     {
         if(s->top!=SIZE-1)
         {
              s->top++;
              s->data[s->top]=num%d;
              num=num/d;
         }
     }
	 printf("结果为:");
     while(s->top!=-1)//按顺序出栈
     {
          x=s->data[s->top];
          printf("%d",x);
          s->top--;
     }
	 printf("\n");
}

3.运行效果图

 数据结构基础——数值转换问题_第1张图片

4.OVER

你可能感兴趣的:(Data,structure,and,algorithm,数据结构,算法,c++)