鱼C论坛

 找回密码
 立即注册
楼主: 小甲鱼

[技术交流] 递归函数的非递归求解(栈的应用)

[复制链接]
发表于 2017-7-5 15:00:54 | 显示全部楼层
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. #define MAXSIZE 100

  4. typedef int ElemType;

  5. typedef struct
  6. {
  7.     ElemType *base, *top;
  8.     int capacity;
  9. } Stack;

  10. int InitStack(Stack *pstack)
  11. {
  12.     pstack -> base = pstack -> top = (ElemType*)malloc(sizeof(ElemType) * MAXSIZE);
  13.     if(!pstack -> base)
  14.         return 0;
  15.     pstack -> capacity = MAXSIZE;
  16.     return 1;
  17. }

  18. int Push(Stack *pstack, ElemType e)
  19. {
  20.     if(pstack -> top - pstack -> base >= pstack -> capacity)
  21.     {
  22.         pstack -> base = (ElemType*)realloc(pstack -> base, (pstack -> capacity + 10) * sizeof(ElemType));
  23.         pstack -> top = pstack -> base + pstack -> capacity;
  24.         pstack -> capacity += 10;
  25.     }
  26.     *(pstack -> top++) = e;
  27. }

  28. void Pop(Stack *pstack, ElemType *e)
  29. {
  30.     *e = *(--pstack -> top);
  31. }

  32. int Empty(Stack *pstack)
  33. {
  34.     return(pstack -> top - pstack -> base == 0);
  35. }


  36. int main()
  37. {
  38.     int parameter, temp = 1, v;
  39.     Stack mStack;

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

  42.     while(parameter >= 0)
  43.     {
  44.         if(parameter == 0)
  45.         {
  46.             Push(&mStack, parameter + 1);
  47.             break;
  48.         }
  49.         else
  50.         {
  51.             Push(&mStack, parameter);
  52.         }
  53.         parameter /= 2;
  54.     }

  55.     while(!Empty(&mStack))
  56.     {
  57.         Pop(&mStack, &v);
  58.         temp *= v;
  59.     }

  60.     printf("%d", temp);
  61.     return 0;
  62. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-3 09:58:09 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-8-9 14:05:10 | 显示全部楼层
尽可能
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-13 13:47:16 | 显示全部楼层
前来学一波
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-28 16:47:02 | 显示全部楼层
回复什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-2 21:13:31 | 显示全部楼层
mr.lu 发表于 2013-6-16 13:13
我是VIP,我骄傲!

坛友不知道你水多深了,知识付费并不是炫耀的资本,学到才是王道,水平高了不妨帮论坛里面的新手解答解答问题,我等感激不尽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-22 21:35:47 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-14 10:59:40 | 显示全部楼层
楼主好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-24 14:53:19 | 显示全部楼层
买买买,全部买,哈哈哈,太棒啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-24 15:37:14 From FishC Mobile | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-24 09:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表