阳光加冰 发表于 2017-7-5 15:00:54

#include <stdio.h>
#include <stdlib.h>

#define MAXSIZE 100

typedef int ElemType;

typedef struct
{
    ElemType *base, *top;
    int capacity;
} Stack;

int InitStack(Stack *pstack)
{
    pstack -> base = pstack -> top = (ElemType*)malloc(sizeof(ElemType) * MAXSIZE);
    if(!pstack -> base)
      return 0;
    pstack -> capacity = MAXSIZE;
    return 1;
}

int Push(Stack *pstack, ElemType e)
{
    if(pstack -> top - pstack -> base >= pstack -> capacity)
    {
      pstack -> base = (ElemType*)realloc(pstack -> base, (pstack -> capacity + 10) * sizeof(ElemType));
      pstack -> top = pstack -> base + pstack -> capacity;
      pstack -> capacity += 10;
    }
    *(pstack -> top++) = e;
}

void Pop(Stack *pstack, ElemType *e)
{
    *e = *(--pstack -> top);
}

int Empty(Stack *pstack)
{
    return(pstack -> top - pstack -> base == 0);
}


int main()
{
    int parameter, temp = 1, v;
    Stack mStack;

    InitStack(&mStack);
    scanf("%d", &parameter);

    while(parameter >= 0)
    {
      if(parameter == 0)
      {
            Push(&mStack, parameter + 1);
            break;
      }
      else
      {
            Push(&mStack, parameter);
      }
      parameter /= 2;
    }

    while(!Empty(&mStack))
    {
      Pop(&mStack, &v);
      temp *= v;
    }

    printf("%d", temp);
    return 0;
}

bran 发表于 2017-8-3 09:58:09

{:5_91:}

qianhz123 发表于 2017-8-9 14:05:10

尽可能

坏小子 发表于 2017-8-13 13:47:16

{:10_256:}前来学一波

圣狄雅哥 发表于 2018-1-28 16:47:02

回复什么

圣狄雅哥 发表于 2018-2-2 21:13:31

mr.lu 发表于 2013-6-16 13:13
我是VIP,我骄傲!

坛友不知道你水多深了,知识付费并不是炫耀的资本,学到才是王道,水平高了不妨帮论坛里面的新手解答解答问题,我等感激不尽{:5_93:}

ba21 发表于 2018-2-22 21:35:47

CJava数据结构 发表于 2018-3-14 10:59:40

楼主好

ipangpang 发表于 2018-3-24 14:53:19

买买买,全部买,哈哈哈,太棒啦

beiyoop 发表于 2019-12-24 15:37:14

学习学习
页: 1 2 3 [4]
查看完整版本: 递归函数的非递归求解(栈的应用)