Em có danh sách liên kết đơn lẻ , chẳn đã được sắp xếp tăng dần , em muốn ghép 2 dslk này thành 1 và cũng đc sắp xếp tăng dần , em viết code không biết sai chổ nào mà nó không chạy , mong mọi người giúp đỡ ạ. Em cảm ơn!
#include <iostream>
using namespace std ;
struct Node{
int data ;
Node *pNext ;
};
struct LinkedList{
Node* pHead ;
};
void Initialize(LinkedList &list){
list.pHead=NULL;
}
Node* CreateNode(int d){
Node *pNode = new Node ;
if(pNode!=NULL){
pNode->data=d ;
pNode->pNext=NULL ;
}
else{
cout<<"\nCap phat vung nho that bai\n";
}
return pNode ;
}
void InsertLast(LinkedList &list, int d){
Node *pNode=CreateNode(d) ;
if(list.pHead==NULL){
list.pHead=pNode ;
}
else{
Node *ptemp = list.pHead ;
while(ptemp->pNext!=NULL){
ptemp=ptemp->pNext ;
}
ptemp->pNext=pNode ;
}
delete pNode ;
pNode=NULL ;
}
void Traverse(LinkedList &list){
Node *pTmp = list.pHead ;
if(pTmp==NULL){
cout<<"Danh sach lien ket rong\n";
return ;
}
while(pTmp!=NULL){
cout<<pTmp->data<<"\t";
pTmp=pTmp->pNext ;
}
}
LinkedList Ghep_List(LinkedList &list1 , LinkedList &list2){
LinkedList list3 ;
Initialize(list3) ;
Node* p1 = list1.pHead ;
Node* p2 = list2.pHead ;
Node* p3 = list3.pHead ;
while(p1 != NULL||p2 != NULL){
if(p1->data<p2->data){
p3->pNext = p1 ;
p3=p1 ;
p1=p1->pNext ;
}
else{
p3->pNext=p2 ;
p3=p2 ;
p2=p2->pNext;
}
}
if(p1==NULL){
p3->pNext=p2;
}
else{
p3->pNext=p1 ;
}
delete p1,p2,p3 ;
return list3 ;
}
int main(){
LinkedList list1,list2,list3 ;
Initialize(list1) ;
Initialize(list2) ;
for(int i=1 ; i<=9 ; i=i+2){
InsertLast(list1,i) ;
}
for(int i=2 ; i<=10 ; i=i+2){
InsertLast(list2,i) ;
}
list3= Ghep_List(list1,list2) ;
Traverse(list3) ;
}