鱼C论坛

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

[技术交流] 任意长度的大数加法(栈的应用)

  [复制链接]
发表于 2015-7-5 01:04:09 | 显示全部楼层
回复看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-7-9 11:07:56 | 显示全部楼层
多学习点例子,帮助很大!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-29 15:46:34 | 显示全部楼层
hh
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-9-1 23:26:35 | 显示全部楼层
抓紧时间学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-3 11:00:44 | 显示全部楼层
膜拜膜拜
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-3 13:12:34 | 显示全部楼层
33333333333333333333333
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-7 09:21:37 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-9-11 19:59:17 | 显示全部楼层
{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-9-16 15:05:01 | 显示全部楼层
感谢小甲鱼老师
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-30 21:54:47 From FishC Mobile | 显示全部楼层
小甲鱼,你真好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-2-1 08:27:37 | 显示全部楼层
真的好极了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-2-14 09:24:36 | 显示全部楼层
99
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-3-12 16:54:10 | 显示全部楼层
我看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-20 10:05:58 From FishC Mobile | 显示全部楼层
来学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-26 21:56:21 | 显示全部楼层
#include <stdio.h>
#include <stdlib.h>
#define STACKSIZE 100
#define INIT_STACK_SIZE 10
typedef struct SqStack
{
    char *base;
    char *top;
    int stacksize;
}SqStack;
void InitSqStack(SqStack *s)
{
    s->base=(char*)malloc(STACKSIZE*sizeof(char));
    if(!s->base)
        exit(0);
    s->top=s->base;
    s->stacksize=STACKSIZE;
}
void Push(SqStack *s,char mychar)
{
    if(s->top-s->base==s->stacksize)
    {
        s->base=(char*)realloc(s->base,(STACKSIZE+INIT_STACK_SIZE)*sizeof(char));
        if(!s->base)
            exit(0);
        s->top=s->base+s->stacksize;
        s->stacksize+=INIT_STACK_SIZE;
    }
    *(s->top++)=mychar;
}
void Pop(SqStack *s,char *ch)
{
    if(s->top==s->base)
        exit(0);
    *ch=*(--s->top);
}
int EmptySqStack(SqStack *s)
{
    if(s->top!=s->base)
        return 1;
    else
        return 0;
}
int main()
{
    char a_mychar,b_mychar,c_mychar;
    char a_elem,b_elem,c_elem;
    int temp=0;
    SqStack a,b,c;
    InitSqStack(&a);
    InitSqStack(&b);
    InitSqStack(&c);
   scanf("%c",&a_mychar);
    while(a_mychar!='#')
    {
        Push(&a,a_mychar);
        scanf("%c",&a_mychar);
    }
    fflush(stdin);
    scanf("%c",&b_mychar);
    while(b_mychar!='#')
    {
        Push(&b,b_mychar);
        scanf("%c",&b_mychar);
    }
    while(EmptySqStack(&a)&&EmptySqStack(&b))
    {
        Pop(&a,&a_elem);
        Pop(&b,&b_elem);
        c_mychar=((a_elem-'0')+(b_elem-'0')+temp)%10+'0';
         temp=((a_elem-'0')+(b_elem-'0'+temp))/10;
        Push(&c,c_mychar);
    }
        while(EmptySqStack(&a))
    {
        Pop(&a,&a_elem);
        c_mychar=((a_elem-'0')+temp)%10+'0';
        temp=((a_elem-'0')+temp)/10;
        Push(&c,c_mychar);
    }
    while(EmptySqStack(&b))
    {
        Pop(&b,&b_elem);
        c_mychar=((b_elem-'0')+temp)%10+'0';
         temp=((b_elem-'0')+temp)/10;
        Push(&c,c_mychar);
    }
    if(temp==1)
    Push(&c,'1');
    while(EmptySqStack(&c))
    {
        Pop(&c,&c_elem);
        printf("%c",c_elem);
    }
    return 0;
}
自己实现的代码,希望大家多多交流,欢迎指正
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-27 17:18:30 | 显示全部楼层
谢谢甲鱼哥
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-9 13:47:00 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-7-6 19:33:06 | 显示全部楼层
  1. #include<cstdio>
  2. #include<cstdlib>

  3. typedef int SElemType;
  4. #define MAXSIZE 100000

  5. typedef struct StackNode{
  6.         SElemType data;
  7.         struct StackNode *next;
  8. };

  9. typedef struct LinkStack{
  10.         StackNode *top;
  11.         int count;
  12. };

  13. void initLinkStack(LinkStack *S){
  14.         S->top=NULL;
  15.         S->count=0;
  16. }

  17. void Push(LinkStack *S,SElemType e){
  18.         StackNode *p=(StackNode *)malloc(sizeof(StackNode));
  19.         p->data=e;
  20.         p->next=S->top;
  21.         S->top=p;
  22.         S->count++;
  23. }

  24. void Pop(LinkStack *S,SElemType *e){
  25.         StackNode *p;
  26.         p=S->top;
  27.         *e=S->top->data;
  28.         S->top=S->top->next;
  29.         S->count--;
  30.         free(p);
  31. }

  32. int main()
  33. {
  34.         LinkStack a,b,c;
  35.         char a_t[MAXSIZE];char b_t[MAXSIZE];
  36.         int i=0;
  37.         int e,d;
  38.         int t=0;
  39.         initLinkStack(&a);initLinkStack(&b);initLinkStack(&c);
  40.         printf("请输入两个大整数,两数用空格隔开:\n");
  41.         scanf("%s%s",a_t,b_t);
  42.         while(a_t[i]!='\0'){
  43.                 Push(&a,a_t[i]-'0');
  44.                 ++i;
  45.         }
  46.         i=0;
  47.         while(b_t[i]!='\0'){
  48.                 Push(&b,b_t[i]-'0');
  49.                 ++i;
  50.         }
  51.         while(a.count && b.count){
  52.                 Pop(&a,&e);
  53.                 Pop(&b,&d);
  54.                 Push(&c,(e+d+t)%10);
  55.                 t=(int)((e+d+t)/10);
  56.         }
  57.         while(a.count){
  58.                 Pop(&a,&e);
  59.                 Push(&c,(e+t)%10);
  60.                 t=(int)((e+t)/10);
  61.         }
  62.         while(b.count){
  63.                 Pop(&b,&e);
  64.                 Push(&c,(e+t)%10);
  65.                 t=(int)((e+t)/10);
  66.         }
  67.         printf("计算的结果为:\n");
  68.         if(t>0)printf("%d",t);
  69.         while(c.count){
  70.                 Pop(&c,&e);
  71.                 printf("%d",e);
  72.         }
  73.         printf("\n");
  74.         return 0;
  75. }
  76. /*
  77. 【个人原创】
  78. 以链栈的形式实现。。
  79. 欢迎大家互相学习*/
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-10 17:04:47 | 显示全部楼层
很喜欢小甲鱼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-21 16:15:08 | 显示全部楼层
123333333333333
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-30 18:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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