阿阿阿阿阿面 发表于 2020-10-4 21:43:47

单链表应用:八进制加法

假设用不带头结点的单链表表示八进制数,例如八进制数536表示成如图所示单链表。要求写一个函数Add,该函数有两个参数A和B,分别指向表示八进制的单链表,执行函数调用Add(A,B)后,得到表示八进制A加八进制B所得结果的单链表,结果保留在单链表A中。

【输入说明】A表的长度和A表中八进制的数码;(中间用空格隔开)

B表的长度和B表中八进制的数码;(中间用空格隔开)

【输出说明】八进制A加八进制B所得结果

      3

      5 3 6

      2

      5 4

【输出样例】

      612

补全剩余的代码
#include<iostream>
usingnamespacestd;

typedefintDataType;
typedefstructnode{
      DataTypedata;
      node*next;
}node;

//尾插法构造单链表
voidinit(node*&first,intlen)
{
      first=NULL;
      node*rear;
      for(inti=0;i<len;++i){
                DataTypeelem;
                cin>>elem;
                node*s=newnode;
                s->data=elem;
                s->next=NULL;
                if(first==NULL){
                        first=s;
                        rear=first;
                }
                else{
                      rear->next=s;
                      rear=s;
                }
      }
}
//八进制A加八进制B,结果存在链表A中
voidadd(node*A,node*B)
{
      

}

voidreverseList(node*&first)
{
      

}
voidshow(node*first)
{
      node*p=first;
      if(p==NULL)cout<<"Empty";
      else{
                while(p!=NULL){
                        cout<<p->data;
                        p=p->next;
                }
                cout<<endl;
      }
}
intmain()
{
      node*A,*B;
      intaLen,bLen;
      cin>>aLen;
      init(A,aLen);
      cin>>bLen;
      init(B,bLen);

      reverseList(A);
      reverseList(B);

      add(A,B);
      reverseList(A);
      show(A);
      return0;
}

召唤风云 发表于 2020-10-6 23:13:16

假设你其他的代码没问题,那是大位放在链表头还是反过来?你没说清啊?而且你的构建一个链表的函数感觉有问题

阿阿阿阿阿面 发表于 2020-10-7 18:49:14

召唤风云 发表于 2020-10-6 23:13
假设你其他的代码没问题,那是大位放在链表头还是反过来?你没说清啊?而且你的构建一个链表的函数感觉有问 ...

这个是程序补全题,上面的代码是老师给的

召唤风云 发表于 2020-10-7 20:10:49

那是大位放在链表头还是反过来?

阿阿阿阿阿面 发表于 2020-10-8 23:25:53

召唤风云 发表于 2020-10-7 20:10
那是大位放在链表头还是反过来?

大位肯定是放在链表头的,因为先把两个链表都逆序后相加,相加完存在A链表中,又逆序了一次,但是不知道该如何填空
页: [1]
查看完整版本: 单链表应用:八进制加法