CWQFOREVER 2016-11-02 11: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-03 05:48
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型