Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101135
  • 博文数量: 34
  • 博客积分: 30
  • 博客等级: 民兵
  • 技术积分: 217
  • 用 户 组: 普通用户
  • 注册时间: 2013-01-10 23:36
文章分类
文章存档

2013年(34)

我的朋友

分类: C/C++

2013-04-01 22:42:31

#include
using namespace std;


struct node
{
int  data;
node
*next;
};
class List
{
public:
List(node*h=NULL);
void Insert(int d);
void Sort();
void Print();
void Link(List& a,List& b);
private:
node *head;
};


List::List(node*h/* =NULL */)
{
head = h;
}


void List::Insert(int d)
{
node *p;
if(head ==
NULL)
{
head = new node;
head->data = d;
head->next = NULL;
}
else
{
p = new node;
p->data = d;
p->next = head;
head = p;
}
}


void List::Print()
{
node*p=head;
for(p=head; p!=NULL; p=p->next)
{
cout<data<<" ";
}
cout< }
void List::Sort()
{
int
temp;
node *p = head;
node *q =
p->next;
node *t;
for(p=head;
p->next!=NULL; p=p->next)
{
t =
p;
for(q=p->next; q!=NULL; q=q->next)
{
if(t->data>q->data)
{
t = q;
}
}
if(t!=p)
{
temp = t->data;
t->data =
p->data;
p->data = temp;
}
}
}


void List::Link(List& a,List&
b)
{
node *pa,*pb;
a.Sort();
b.Sort();
pa=a.head;
pb=b.head;
for(; pa!=NULL; pa=pa->next)
{
for(; pb!=NULL; pb=pb->next)
{
if(pa->datadata)
{
Insert(pa->data);

break;
}
else
if(pa->data>pb->data)
{

Insert(pb->data);

}
else
{
Insert(pb->data);
pb= pb->next;
break;
}

}
if(pa->next==NULL&&pa->data>pb->data)
{
break;
}
}
if(pa==NULL&&pb!=NULL)
{
for(;pb!=NULL; pb=pb->next)
{
Insert(pb->data);
}
}
else
if(pb==NULL&&pa!=NULL)
{
for(;pa!=NULL; pa=pa->next)
{
Insert(pa->data);
}
}
Sort();
}
int main()
{
int n;
List a,b,c;
cout<<"输入1的数据(输入-1表示结束):";
cin>>n;
while(n!=-1)
{
a.Insert(n);
cin>>n;
}
cout<<"输入链表2的数据(输入-1表示结束):";
cin>>n;
while(n!=-1)
{
b.Insert(n);
cin>>n;
}



c.Link(a,b);
c.Print();
return 0;
}
阅读(901) | 评论(0) | 转发(0) |
0

上一篇:快速排序

下一篇:二叉树先序中序找后序

给主人留下些什么吧!~~