#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define stack_init_size 100
#define stackincrement 10
typedef struct sqstack
{
int *base;
int *top;
int stacksize;
} sqstack;
int StackInit(sqstack *s)
{
s->base=(int *)malloc(stack_init_size *sizeof(int));
if(!s->base)
return 0;
s->top=s->base;
s->stacksize=stack_init_size;
return 1;
}
int Push(sqstack *s,int e)
{
if(s->top-s->base>=s->stacksize)
{
s->base=(int *)realloc(s->base,(s->stacksize+stackincrement)*sizeof(int));
if(!s->base)
return 0;
s->top=s->base+s->stacksize;
s->stacksize+=stackincrement;
}
*(s->top++)=e;
return e;
}
int Pop(sqstack *s,int e)
{
if(s->top==s->base)
return 0;
e=*--s->top;
return e;
}
int stackempty(sqstack *s)
{
if(s->top==s->base)
{
return 1;
}
else
{
return 0;
}
}
int conversion(sqstack *s)
{
int n,e=0,flag=0;
printf("输入要转化的十进制数:\n");
scanf("%d",&n);
printf("要转化为多少进制:2进制、8进制、16进制 填数字!\n");
scanf("%d",&flag);
printf("将十进制数%d转化为%d进制是:\n",n,flag);
while(n)
{
Push(s,n%flag);
n=n/flag;
}
while(!stackempty(s))
{
e=Pop(s,e);
switch(e)
{
case 10: printf("A");
break;
case 11: printf("B");
break;
case 12: printf("C");
break;
case 13: printf("D");
break;
case 14: printf("E");
break;
case 15: printf("F");
break;
default: printf("%d",e);
}
}
printf("\n");
return 0;
}
int main()
{
sqstack s;
StackInit(&s);
conversion(&s);
return 0;
}
出自
华翔博客 --
http://www.looksky.net/?p=329
分享到:
相关推荐
该源码 详细说明了c语言中 顺序栈在进制转换上的应用
打印函数遍历栈中所有元素,将十进制数字转换为相应的字符表示,并按逆序输出,得到最终的进制转换结果。 ##### 8. 主函数逻辑 ```c int main() { //... scanf("%d", &m); //... while (m) { c = m % n; m ...
3. **栈在进制转换中的应用** - 进制转换问题可以通过使用栈来高效解决。其基本思路是利用栈的FILO特性,将待转换的数值不断对目标进制取模并将余数入栈,直至数值为零。最后依次出栈即可得到转换后的结果。 #### ...
数据结构的重要算法应用 ,栈,进制转换,可用于计算的,栈的应用
在计算机科学中,将十进制数转换为...但这个基本框架提供了一个使用栈实现十进制到二进制转换的基础。对于给定的压缩包文件“DataStack”,可能包含了实现这个功能的完整源代码或者测试数据,你可以进一步查看和学习。
本主题将深入探讨栈如何应用于十六进制转换,并结合C语言实现这一过程。 栈的基本操作包括压入(push)、弹出(pop)、查看顶部元素(peek)和检查是否为空(isEmpty)。在十六进制转换中,栈可以用来高效地将十...
4. **进制转换函数** (`ChangeNum`): 使用栈来进行十进制数到八进制数的转换。 ### 四、代码解析 #### 1. 基础定义与类型声明 ```c #include #include #define OK 1 #define ERROR 0 #define STACK_INIT_SIZE 100...
总结来说,栈在进制转换中的应用主要是通过不断地压入和弹出操作,来模拟数的除法过程。对于从十进制转换为二进制或八进制,我们可以通过将除法的余数作为栈的操作元素,最后按照从低位到高位的顺序读取栈中的元素,...
总结来说,栈在进制转换中的应用展示了其在计算过程中的灵活性和效率。通过理解和掌握这一方法,不仅可以加深对栈数据结构的理解,还能提升解决实际问题的能力。对于学习和实践C语言的开发者,这是一个很好的练习...
压缩包内的文件`进制转换update.c`可能包含了对原有代码的更新或改进,`进制转换toInt.c`可能是一个专门用于将其他进制转换成整数的函数,而`进制转换.c`则可能是整个进制转换功能的核心源文件。 在C语言中实现进制...
本资源主要关注栈在进行进制转换中的应用,这对于理解和实践C语言的编程技巧具有很高的价值。 在数字系统中,我们通常使用十进制、二进制、八进制和十六进制来表示数值。进制转换是计算机科学的基础,理解如何在...
总结来说,使用栈结构实现进制转换的关键在于理解栈的LIFO特性,并将其应用到计算过程。在C语言中,我们需要注意内存管理和类型转换;而在Python中,我们可以利用其内置的数据结构和便捷的语法。这两种实现方式都...
栈在进制转换中的应用主要是因为它的高效性和易于实现。 **二进制转换:** 二进制(Binary)是基于2的计数系统,只有两个数字0和1。在二进制到其他进制的转换中,我们可以先将二进制数转换为十进制,然后再将十进制...
### 核心知识点:进制转换与栈的应用 #### 进制转换原理 进制转换的基本原理是通过不断地除以目标进制数,并记录下每次除法的余数,直至商为零。这些余数即为目标进制数的每一位数字,但由于它们是倒序生成的,...
在这个具体应用中,数值转换主要涉及将数字表示从一种形式转换为另一种形式,例如二进制、八进制、十进制和十六进制之间的转换。 首先,我们来看看如何使用栈进行二进制到十进制的转换。当我们有一个二进制数,比如...
在本主题中,我们将深入探讨栈(Stack)这一特殊的数据结构,并应用它来进行进制转换和括号匹配,这些都是编程中常见的问题解决策略。 栈是一种后进先出(Last In, First Out,简称LIFO)的数据结构,类似于日常...
"数据结构栈实现进制的转换" 数据结构中,栈是一种重要的数据结构,它可以用来实现各种数据的转换。...在这个例子中,我们使用了栈来实现十进制到十六进制的数据转换,展示了栈在数据结构中的应用。
进制转换是计算机科学中的基础概念,涉及到数字系统的基础知识,包括二进制、八进制、十进制和十六进制等。在各种编程语言中,理解和掌握进制转换对于解决问题至关重要,尤其是在处理二进制数据、内存表示以及网络...
【栈的应用——数制转换(C/C++)】 在计算机科学中,数制转换是一种常见的操作,用于在不同数值系统之间转换数字。本程序利用栈(Stack)这一数据结构来实现数制转换,主要涉及十进制到其他进制(如八进制、十六...
首先,了解10进制到2进制转换的基本原理是必要的。10进制是人类常用的计数系统,而2进制则是计算机的基础。任何10进制数字都可以通过除以2并取余的方式来转换为2进制。每次除法得到的余数从下往上排列就是2进制数。...