无头结点单链表法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
using namespace std;
template
struct Node
{
T data;
Node
};
template
class linklist
{
private:
Node
public:
linklist(T a[],int n);
~linklist();
T Get(int i);
int length();
friend linklist
template
friend ostream & operator<<(ostream & os,linklist
};
template
int linklist
{
Node
int count=1;
while(p!=NULL)
{
p=p->next;
count++;
}
return count;
}
template
ostream & operator<<(ostream & os,linklist
{
cout<
while(p!=NULL)
{
os<
p=p->next;
}
return os;
}
template
linklist
{
Node
Node
while(p!=NULL)
{
q=p;
p=p->next;
delete q;
}
}
template
linklist
{
first=new Node
Node
first->data=a[0];
for(int i=1;i
s=new Node
s->data=a[i];
p->next=s;
p=s;
}
p->next=NULL;
}
template
T linklist
{
Node
int count=0;
while(p!=NULL && count
p=p->next;
count++;
}
return p->data;
}
linklist
{
cout<
Node
int flag=0,i=0;
int n=A.length(),m=B.length();
if(n>m)
{
Node
for(;i
q->data=(A.Get(i+1)+B.Get(i+1)+flag)%8;
flag=(A.Get(i+1)+B.Get(i+1)+flag)/8;
q=q->next;
}
for(i=m;i
q->data=(A.Get(i+1)+flag)%8;
flag=(A.Get(i+1)+flag)/8;
q=q->next;
}
q->data=(A.Get(n)+flag)%8;
flag=(A.Get(n)+flag)/8;
if(flag==1)
{
Node
s->data=1;
s->next=q->next;
q->next=s;
}
return A;
}
else
{
Node
for(i=0;i
q->data=(A.Get(i+1)+B.Get(i+1)+flag)%8;
flag=(A.Get(i+1)+B.Get(i+1)+flag)/8;
q=q->next;
}
for(;i
q->data=(A.Get(i+1)+flag)%8;
flag=(A.Get(i+1)+flag)/8;
q=q->next;
}
if(flag==1)
{
Node
s->data=1;
s->next=q->next;
q->next=s;
}
return B;
}
}
int main()
{
int a[2]={1,1};
int b[1]={1};
linklist
linklist
cout<cout<