65,210
社区成员
发帖
与我相关
我的任务
分享#include <iostream>
using namespace std;
#define NULL 0
typedef int ELEM;
class link{
public:
ELEM element;
link *next;
link() {
element=NULL;
next=NULL;
}
~link(){}
};
class list{
private:
link* head;
link* curr;
public:
list();
~list();
void create();
void display();
friend void merge(list**,list*);
};
list::list(){
head=curr=new link;
}
list::~list(){
while(head!=NULL){
curr=head;
head=head->next;
delete curr;
curr = NULL;
}
}
void list::display(){
curr=head;
while(curr->next!=NULL){
cout <<curr->next->element <<" ";
curr=curr->next;
}
curr = head;
cout <<endl;
}
void list::create(){
ELEM e;
cout <<"请输入链表第一个数据(输入-999时结束):\n";
cin>>e;
while(e!=-999){
link* temp=new link;
temp->element=e;
curr->next=temp;
curr=curr->next;
cout <<"请输入链表下一个数据:\n";
curr->next = NULL;
cin>>e;
}
}
void merge(list **a,list *b){
(*a)->curr=(*a)->head;
link *p = b->head->next;
while((*a)->curr->next!=NULL){(*a)->curr=(*a)->curr->next;}
while(p != NULL){
link* temp=new link;
temp->element = p->element;
temp->next = NULL;
(*a)->curr->next = temp;
(*a)->curr = (*a)->curr->next;
p = p->next;
}
}
int main()
{
list *a = new list,b;
cout <<"输入第一个链表:" <<endl;
a->create();
cout <<"输入第二个链表:" <<endl;
b.create();
a->display();
b.display();
merge(&a,&b);
a->display();
delete(a);
return 0;
}
#include <iostream>
using namespace std;
#define NULL 0
typedef int ELEM;
class link{
public:
ELEM element;
link *next;
link() {
element=NULL;
next=NULL;
}
~link(){}
};
class list{
private:
link* head;
link* curr;
public:
list();
~list();
void create();
void display();
friend void merge(list**,list*);
};
list::list(){
head=curr=new link;
}
list::~list(){
while(head!=NULL){
curr=head;
head=head->next;
delete curr;
}
}
void list::display(){
curr=head;
while(curr->next!=NULL){
cout <<curr->next->element <<" ";
curr=curr->next;
}
cout <<endl;
}
void list::create(){
ELEM e;
cout <<"请输入链表第一个数据(输入-999时结束):\n";
cin>>e;
while(e!=-999){
link* temp=new link;
temp->element=e;
curr->next=temp;
curr=curr->next;
cout <<"请输入链表下一个数据:\n";
curr->next = NULL;
cin>>e;
}
}
void merge(list **a,list *b){
(*a)->curr=(*a)->head;
b->curr=b->head;
while((*a)->curr->next!=NULL){(*a)->curr=(*a)->curr->next;}
/*
while(b.curr->next!=NULL){
a.curr->next=b.curr->next;
a.curr=a.curr->next;
b.curr=b.curr->next;
a.curr->next=NULL;
}
*/
(*a)->curr->next = b->curr->next;
}
int main()
{
list *a = new list,b;
cout <<"输入第一个链表:" <<endl;
a->create();
cout <<"输入第二个链表:" <<endl;
b.create();
a->display();
b.display();
merge(&a,&b);
a->display();
return 0;
}