链表合并的问题

onlyshuang 2012-03-07 09:18:16
将两个有序的链表合并成一个有序的链表
#include<iostream>
#include <ctime>
#include<cstdlib>
using namespace std;
class slist
{
public:
int data;
slist* next;
};
slist* first;

slist* create()
{
slist* newnode=NULL;
slist* back;
first=NULL;
cout<<"the old items of list:";
cout<<"the old items of list:";
for(int i=0;i<10;i++)
{
back=newnode;//back指向newnode
newnode=new slist;//建立新的节点
newnode->data=rand()%100;
cout<<newnode->data<<" ";
newnode->next=NULL;
if(first==NULL)
first=newnode;//first指向newnode
else
{
back->next=newnode;
}
}
back->next=NULL;
delete newnode;
cout<<endl;
return first;
}
slist * sort(slist *first)//对链表进行排序
{

int temp=0;
slist * p=first;
for(int i=0;i<10;i++)
for(;p->next!=NULL;p=p->next)
{
if(p->data>p->next->data)
{
temp=p->data;
p->data=p->next->data;
p->next->data=temp;
}
}
cout<<"the new items of sort:";
p=first;
for(i=0;i<10;i++)
{
cout<<p->data<<" ";
p=p->next;
}
return first;
}
slist * combine(slist * first1,slist * first2)
{ slist * first3=new slist;
first3->next=NULL;
slist * p,*q;
while(first!=NULL&&first2!=NULL)
{
if(first1->data<=first2->data)
{
p=first1->next;
first1->next=first3->next;
first3->next=first1;
first1=p;
}
else
{
q=first1->next;
first1->next=first3->next;
first3->next=first1;
first1=q;
}
}
for(int i=0;i<20;i++)
{
cout<<first3->data<<" ";
first3=first3->next;
}
return first3;
}
void main()
{
slist * list1;//创建节点指针为了接管一个链表
slist * list2;
slist * list3;
// slist * first1,first2;
list1=create();
list2=create();
list1=sort(list1);
list2=sort(list2);
list3=combine(list1,list2);
}

...全文
102 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
无芒 2012-03-07
  • 打赏
  • 举报
回复

#include<iostream>
#include <ctime>
#include<cstdlib>
using namespace std;
class slist
{
public:
int data;
slist* next;
};

slist* first;

slist* create()
{
slist* newnode=NULL;
slist* back;
first=NULL;
cout<<"the old items of list:";
cout<<"the old items of list:";
for(int i=0;i<10;i++)
{
back=newnode;//back指向newnode
newnode=new slist;//建立新的节点
newnode->data=rand()%100;
cout<<newnode->data<<" ";
newnode->next=NULL;
if(first==NULL)
first=newnode;//first指向newnode
else
{
back->next=newnode;
}
}
back->next=NULL;
delete newnode;
cout<<endl;
return first;
}

slist * sort(slist *first)//对链表进行排序
{

int temp=0;
slist * p=first;
//排序算法没写好 楼主重新写下吧
for(int i=0;i<10;i++)
{
for(;p->next!=NULL;p=p->next)
{
if(p->data > p->next->data)
{
temp = p->data;
p->data = p->next->data;
p->next->data = temp;
}
}
}
cout<<"the new items of sort:";
p = first;
//i 未声明
int i = 0;
for(;i<10;i++)
{
cout<<p->data<<" ";
p=p->next;
}
return first;
}
slist * combine(slist * first1,slist * first2)
{
slist * first3=new slist;
first3->next=NULL;
slist * p,*q;
while(first!=NULL&&first2!=NULL)
{
if(first1->data<=first2->data)
{
p=first1->next;
first1->next=first3->next;
first3->next=first1;
first1=p;
}
else
{
q=first1->next;
first1->next=first3->next;
first3->next=first1;
first1=q;
}
}
for(int i=0;i<20;i++)
{
cout<<first3->data<<" ";
first3=first3->next;
}
return first3;
}
int main()
{
slist * list1;//创建节点指针为了接管一个链表
slist * list2;
slist * list3;
// slist * first1,first2;
list1=create();
list2=create();
list1=sort(list1);
list2=sort(list2);
list3=combine(list1,list2);
system("pause");
return 0;
}

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧