CWQFOREVER 2016-11-02 03:14 采纳率: 33.3%
浏览 1268
已采纳

数据结构试验题目,c++链表

用单链表求大整数之和,刚学,写了好久了,但是没对
#include "Head.h"
#define MaxSize 100
#include

using namespace std;

int main()
{
string i,j;
int a[MaxSize],b[MaxSize];
c:cout<<"请输入第一个大整数(<=100位):"< cin>>i;
int lena=i.size();
if(lena>MaxSize)
{
cout<<"输入数值过大,请输入100位以内数值!"< goto c;
}
d:cout cin>>j;
int lenb=j.size();
if(lenb>MaxSize)
{
cout<<"输入数值过大,请输入100位以内数值!"<<endl;
goto d;
}
for(int m=0;m<lena;m++)
a[m]=i[m]-48;
for(int n=0;n<lenb;n++)
b[n]=j[n]-48;
LinkList A(a,lena);
LinkList B(b,lenb);
B.PrintList();
cout<<endl;
A.PrintList();
LinkList C;
Add(A,B,C);
cout<<endl;
C.PrintList();
//C.PrintList(A,B);
return 0;
}
#ifndef HEAD_H_INCLUDED
#define HEAD_H_INCLUDED

class Node
{
public:
int data;
Node *next;
};
class LinkList
{
private :
Node *first;
int length;
public:
LinkList();
LinkList(int a[],int n);
~LinkList();
void PrintList(LinkList A,LinkList B);
void PrintList();
void PrintList(LinkList C);
void Insert(int i,int x);
friend void Add(LinkList A,LinkList B,LinkList &C);
};

#endif // HEAD_H_INCLUDED
#include "Head.h"
#include

using namespace std;
LinkList::LinkList()
{
first=new Node;
first->next=NULL;
}
LinkList::LinkList(int a[],int n)
{
first=new Node;
first->next=NULL;
for(int i=0;i {
Node *s=new Node;
s->data=a[i];
s->next=first->next;
first->next=s;
}
length=n;
}
LinkList::~LinkList()
{
while(first!=NULL)
{
Node* q=first;
first=first->next;
delete q;
}
}
void LinkList::PrintList(LinkList A,LinkList B)
{
Node* m=A.first->next;
while(m!=NULL)
{
cout<data;
m=m->next;
}
cout<<"+";
Node* n=B.first->next;
while(n!=NULL)
{
cout<data;
n=n->next;
}
cout<<"=";
Node* p=first->next;
while(p!=NULL)
{
cout<data;
p=p->next;
}
}
void LinkList::Insert(int i,int x)
{
Node* p=first;
int counter=0;
while(p!=NULL&&counter {
p=p->next;
counter++;
}
if(p==NULL)
throw"位置";
else
{
Node* s=new Node;
s->data=x;
s->next=p->next;
p->next=s;
}
}
void LinkList::PrintList(LinkList C)
{
Node* p=C.first->next;
while(p!=NULL)
{
cout<data;
p=p->next;
}
}
void LinkList::PrintList()
{
Node* p=first->next;
while(p!=NULL)
{
cout<data;
p=p->next;
}
}
void Add(LinkList A,LinkList B,LinkList &C)
{
Node* pre=A.first;
Node* p=pre->next;
Node* qre=B.first;
Node* q=qre->next;
Node* Cre=C.first;
Node* c=Cre->next;
int flag=0,sum=0;
while(A.length==B.length)
{
sum=p->data+q->data+flag;
if(sum>=10)
{
c->data=sum-10;
flag=1;
}
else if(sum>=0&&sum {
c->data=sum;
flag=0;
}
p=p->next;
q=q->next;
c->next=Cre->next;
Cre->next=c;
}
while(A.length>B.length)
{
sum=p->data+flag;
if(sum>=10)
{
c->data=sum-10;
flag=1;
}
else if(sum>=0&&sum {
c->data=sum;
flag=0;
}
p=p->next;
c->next=Cre->next;
Cre->next=c;
}
while(A.length {
sum=q->data+flag;
if(sum>=10)
{
c->data=sum-10;
flag=1;
}
else if(sum>=0&&sum {
c->data=sum;
flag=0;
}
q=q->next;
c->next=Cre->next;
Cre->next=c;
}
if(flag)
{
c->data=1;
c->next=Cre->next;
Cre->next=c;
}
}

展开全部

  • 写回答

6条回答 默认 最新

  • Findway_ 2016-11-02 21:48
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 KeiI中头文件找不到怎么解决
  • ¥15 QT6将音频采样数据转PCM
  • ¥15 本地安装org.Hs.eg.dby一直这样的图片报错如何解决?
  • ¥15 下面三个文件分别是OFDM波形的数据,我的思路公式和我写的成像算法代码,有没有人能帮我改一改,如何解决?
  • ¥15 Ubuntu打开gazebo模型调不出来,如何解决?
  • ¥100 有chang请一位会arm和dsp的朋友解读一个工程
  • ¥50 求代做一个阿里云百炼的小实验
  • ¥15 查询优化:A表100000行,B表2000 行,内存页大小只有20页,运行时3页,设计两个表等值连接的最简单的算法
  • ¥15 led数码显示控制(标签-流程图)
  • ¥20 为什么在复位后出现错误帧
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部