| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 892 人关注过本帖
标题:单链表实现两个整数相加
只看楼主 加入收藏
NV77
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2009-11-9
结帖率:66.67%
收藏
已结贴  问题点数:30 回复次数:2 
单链表实现两个整数相加
谢谢  玩出来的代码
他已经帮我解释几次了
但我还没完全整明白
给个代码吧
不是自己懒
实在是没入门
我编了好多次总是存在问题
谢谢
搜索更多相关主题的帖子: 相加 整数 单链 
2009-11-23 22:34
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:30 
#include<stdio.h>
#include<conio.h>
#define MAX 100
typedef struct LNOde
{
    int data;
    struct LNOde *pre,*next;
}*LNOde,List;
LNOde CreatList()
{
    LNOde p,q,r;
    char s[MAX];
    int i=0;
    printf("输入一个整数:");
    gets(s);
    p=(LNOde)malloc(sizeof(List)*MAX);
    q=r=p;p->data=-1;
    while(s[i]!='\0')
    {
       q=(LNOde)malloc(sizeof(List));
       q->data=s[i++]-'0';
       q->pre=r;
       r->next=q;
       r=q;
    }r->next=NULL;
    return p;
}
LNOde QiuHe(LNOde t1,LNOde t2)                         /*两数相加*/
{
    while(t1->data!=-1&&t2->data!=-1)
    {
        t1->data=t1->data+t2->data;
        if(t1->data>9)
          {
              t1->data-=10;
              t1->pre->data+=1;
          }
        t1=t1->pre;
        t2=t2->pre;
    }
    if(t1->next->data>9)
         t1->next->data-=10;
    return t1;
}
LNOde Comper(LNOde p1,LNOde p2)               /*比较两数的位数*/
{
    LNOde s1=p1->next,s2=p2->next,t1,t2;
    int i=0,j=0;
    while(s1!=NULL){t1=s1,s1=s1->next;i++;}
    while(s2!=NULL){t2=s2;s2=s2->next;j++;}
    if(i>=j)QiuHe(t1,t2);                      /*第一个数的位数不小于第二个数的位数,加到第一个数上*/
    else QiuHe(t2,t1);
    return i>=j?p1:p2;
}
void print(LNOde L)
 {
     LNOde p;
     printf("两整数的和为:");
     if(L->data!=-1)printf("%d",1);
     p=L->next;
     do
      {
          printf("%d",p->data);
          p=p->next;
      } while(p!=NULL);
      printf("\n");
 }
int main()
{
    LNOde p1,p2,p3;
    p1=CreatList();
    p2=CreatList();
    p3=Comper(p1,p2);
    print(p3);
    getch();
    return 0;
}

离恨恰如春草,更行更远还生。
2009-11-24 17:46
叫我小钰
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2017-11-27
收藏
得分:0 
这个为什么在vc++运行不了,实现不了1+9999
2017-11-27 20:12
快速回复:单链表实现两个整数相加
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014291 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved