当前位置: 代码迷 >> C语言 >> 栈的应用的意义?
  详细解决方案

栈的应用的意义?

热度:152   发布时间:2006-11-27 12:35:09.0
栈的应用的意义?
把输入的任何一个十进制数转换为对应的八进制数?算法可以这样写.
1)
void conversion()
{
int a[5],i=0,m,j;
printf("please input a integer:");
scanf("%d",&m);
while(m>0)
{
a[i]=m%8;
m/=8;
i++
}
printf("\n");
for(j=i;i>=0;i--)
printf("%d",a[i]);
}

2)
void conversion()
{
Stack st;
st.top=-1;
int e,m;
scanf("%d",&m);
while(m)
{
push(st,m%8);
m=m/8;
}
while(!sempth(st))
{
pop(st,e);
printf("%d",e);
}
}
上述两种都可以吧!不明白的是.第一种这么简单.为什么还要用第二种呢?而且第二种看起来有点复杂,要调用定义的函数.这里的栈的应用有什么重要的意义?谢谢.
搜索更多相关的解决方案: 应用  

----------------解决方案--------------------------------------------------------
栈应用于排序  非常方便
----------------解决方案--------------------------------------------------------
先进后出嘛
用栈思路很清晰!!!!!!!
----------------解决方案--------------------------------------------------------
栈的重要作用――计算表达式
----------------解决方案--------------------------------------------------------
以下是引用zhufeifei在2006-11-27 12:35:09的发言:
把输入的任何一个十进制数转换为对应的八进制数?算法可以这样写.
1)
void conversion()
{
int a[5],i=0,m,j;
printf("please input a integer:");
scanf("%d",&m);
while(m>0)
{
a[i]=m%8;
m/=8;
i++
}
printf("\n");
for(j=i;i>=0;i--)
printf("%d",a[i]);
}

2)
void conversion()
{
Stack st;
st.top=-1;
int e,m;
scanf("%d",&m);
while(m)
{
push(st,m%8);
m=m/8;
}
while(!sempth(st))
{
pop(st,e);
printf("%d",e);
}
}
上述两种都可以吧!不明白的是.第一种这么简单.为什么还要用第二种呢?而且第二种看起来有点复杂,要调用定义的函数.这里的栈的应用有什么重要的意义?谢谢.

第一个也可以看成是栈.因为有存储空间a[],同时也记录了数组里含有元素的最大下标i,这个和栈没什么区别.
用push()和直接写没有什么区别的.只不过,将它封装成一个函数.
----------------解决方案--------------------------------------------------------

  相关解决方案