关闭

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

标签: list阿里巴巴
6010人阅读 评论(0) 收藏 举报
分类:
42.请修改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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:76958次
    • 积分:1349
    • 等级:
    • 排名:千里之外
    • 原创:58篇
    • 转载:9篇
    • 译文:0篇
    • 评论:13条
    文章分类
    最新评论