数据结构C语言实现----栈的实例

2021-04-14 15:28

阅读:539

标签:cpp   停止   img   span   变量   struct   tst   ==   exit   

 

用栈的知识,编写一个程序,输入二进制,输出十进制

 

注意点:

    1.在主函数里别忘了先创建一个栈,在进行入栈操作

    2.转换过程会用到一个循环,需要用到栈的实际长度作为条件,要在进入循环前先把长度计算出来存入到变量len中,而不能用stack.top - stack.base来代替len,因为在循环中需要出栈操作,所以(stack.top - stack.base)是变化的

 

代码如下:

 

#include
#include
#include
/******************************************************
 * 做一个入栈操作,把一串二进制数字压入栈里
 * 之后应该是一个出栈操作,包括在一个大循环中
 * 第一个出栈的乘以2^0,第二个出栈的乘以2^1.....以此类推
 * 把每个二次幂的结果求和就得到十进制
 * **************************************************/

typedef struct 
{
    int *base;
    int *top;
    int stacksize;
}sqStack;
//////////////////////////////////////////////////////
//创建栈
#define STACK_INIT_SIZE 100
void initstack(sqStack *stack)
{
    stack->base = (int*)malloc( STACK_INIT_SIZE * sizeof(int));
    if (!stack->base)
    {
        exit(0);
    }
    stack->top = stack->base;
    stack->stacksize = STACK_INIT_SIZE;
}
/////////////////////////////////////////////////////////
//入栈操作
#define STACK_MORE 10
void Push(sqStack *stack , int c)
{
    if (stack->top - stack->base > stack->stacksize)
    {
        stack->base = (int*)realloc(stack->base , (stack->stacksize + STACK_MORE) * sizeof(int));
        if (!stack->base)
        {
            exit(0);
        }
        stack->top = stack->base + stack->stacksize;
        stack->stacksize = stack->stacksize + STACK_MORE;
    }
    *(stack->top)=c;
    stack->top++;
}
////////////////////////////////////////////////////////////
//出栈操作
void Pop(sqStack *stack , int *c)
{
    if (stack->base == stack->top)
    {
        return;
    }
    *c = *--(stack->top);
}

int main()
{
    sqStack stack;
    int c;
    initstack(&stack);//创建一个栈
    printf("请输入需要转换的二进制:");
    while ((c = getchar()) != ‘\n‘)//读取输入的二进制字符串,输入回车停止
    {
        if (c!=‘\n‘)//防止回车符压进栈中
        {
            Push(&stack , c);
        }
    }
    int sum = 0;//十进制结果
    int len = stack.top - stack.base;//计算栈的实际长度
    for (size_t i = 0; i 

 

  

运行结果:

技术图片

 

 

  

数据结构C语言实现----栈的实例

标签:cpp   停止   img   span   变量   struct   tst   ==   exit   

原文地址:https://www.cnblogs.com/jerryleesir/p/13336350.html


评论


亲,登录后才可以留言!