现在的位置: 首页 > 综合 > 正文

请修改append函数,利用这个函数实现

2014年09月05日 ⁄ 综合 ⁄ 共 1108字 ⁄ 字号 评论关闭

.请修改append函数,利用这个函数实现(链表):

两个非降序链表的并集,1->2->3 和 2->3->5 并为 1->2->3->5
另外只能输出结果,不能修改两个链表的数据。

//coder:LEE
//20120307
#include<iostream>
#include<cassert>
using namespace std;
struct List
{
int data;
List *next;
};
void Init(List *&p,int starti)
{
List *pCur;
for (int i=starti;i<starti+3;i++)
{
List *pNext=new List();
pNext->data=i;
pNext->next=NULL;
if(i==starti)
{
p=pNext;
pCur=p;
}
else
{
pCur->next=pNext;
pCur=pNext;
}
}
}
void Print(List *p)
{

while(p)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}
void Append(List *pHead1,List *pHead2)
{
assert(pHead1);
assert(pHead2);
while(pHead1&&pHead2)
{
int value1=pHead1->data;
int value2=pHead2->data;
if (value1<value2)
{
cout<<value1<<" ";
pHead1=pHead1->next;
}
else if (value1>value2)
{
cout<<value2<<" ";
pHead2=pHead2->next;
}
else
{
cout<<value1<<" ";
pHead1=pHead1->next;
pHead2=pHead2->next;
}
}
while(pHead1)
{
cout<<pHead1->data<<" ";
pHead1=pHead1->next;
}
while(pHead2)
{
cout<<pHead2->data<<" ";
pHead2=pHead2->next;
}
}
int main()
{
List *head1;
Init(head1,1);
List *head2;
Init(head2,2);
Print(head1);
Print(head2);
Append(head1,head2);
return 0;
}

阿里巴巴:
已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序。使用非递归方法以及递归方法

。answer:

http://blog.sina.com.cn/s/blog_690d24710100tx6g.html

抱歉!评论已关闭.