创建两个链表并实现两个链表相加:
#include <iostream>
using namespace std;
struct ListNode{
int val;
ListNode *next;
ListNode (int x):val(x),next(NULL){}
};
ListNode * Creat_Link()
{
ListNode *head=NULL,*s,*r;
int n;
cin>>n;
while(n!=-1)
{
s=new ListNode(n);
if(head==NULL)
head=s;
else
r->next=s;
r=s;
cin>>n;
}
r->next=NULL;
return head;
}
ListNode *addTwoLink(ListNode *l1,ListNode *l2)
{
ListNode *head=NULL,*s,*r;
while(l1!=NULL&&l2!=NULL)
{
s=new ListNode(l1->val+l2->val);
if(head==NULL)
head=s;
else
r->next=s;
r=s;
l1=l1->next;
l2=l2->next;
}
r->next=NULL;
return head;
}
void display(ListNode *head)
{
while(head!=NULL)
{
cout<<head->val<<" ";
head=head->next;
}
cout<<endl;
}
int main()
{
ListNode *p1,*p2,*result;
cout<<"input the first"<<endl;
p1=Creat_Link();
cout<<"input the second"<<endl;
p2=Creat_Link();
result=addTwoLink(p1,p2);
display(result);
return 0;
}