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

原创 2012年03月22日 19:48:33
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

算法习题42:修改append函数,求链表并集

请修改append函数,利用这个函数实现: 两个非降序链表的并集,1->2->3 和 2->3->5 并为 1->2->3->5 另外只能输出结果,不能修改两个链表的数据。 -------------...
  • ylf13
  • ylf13
  • 2013年11月04日 12:49
  • 595

请修改append 函数,利用这个函数实现:两个非降序链表的并集,1->2->3 和2->3->5 并为1->2->3->5 另外只能输出结果,不能修改两个链表的数据。

不知道啥意思,用JAVA中Linkedlist实现链表,代码如下:

append函数 两非递减链表的合并

#include using namespace std; typedef struct Node { int data; Node *next; }lnode,*list; list listi...
  • gfgdsg
  • gfgdsg
  • 2014年07月27日 20:23
  • 303

Erlang list的++操作和append函数的底层实现

当提到Erlang中list的++操作符时,我们常会想到它的性能问题。 有些人知道++操作比较耗时,就改用函数append来代替。 到底++操作和append函数之间有什么区别? 我们来查看一下它...

链表 树 散列函数C語言實現

  • 2011年08月18日 22:43
  • 119KB
  • 下载

C++面试题,自己实现String类的构造函数,拷贝构造函数,赋值操作符,append,replace,+运算符重载等

#include "string.h" #include using namespace std; class String { public:  String(const char *...

关于链表的几个函数

  • 2013年08月22日 13:57
  • 2KB
  • 下载

链表的主函数

  • 2013年11月08日 20:20
  • 2KB
  • 下载

Go语言中append函数返回值必须有变量接收的原因探究

append函数返回更新后的slice(长度和容量可能会变),必须重新用slice的变量接收,不然无法编译通过    slice的底层是数组,一片连续的内存,slice变量只是存储该slice...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:42.请修改append函数,利用这个函数实现(链表):
举报原因:
原因补充:

(最多只允许输入30个字)