//合并兩個有序單鏈表(只移動指標),編譯過了,運行失敗,求改正
#include<iostream>
using namespace std;
template <class T>
struct LinkNode{
T data;
LinkNode<T> * link;
};
template <class T>
class List{
private:
LinkNode<T> *first;
public:
void Input();
void Output();
LinkNode<T> *GetHead()const{return first;}
};
template <class T>
void List<T>::Input(){
LinkNode<T> *current=first->link;
LinkNode<T> *newNode;
newNode=new LinkNode<T>();
cout<<"輸入鏈表元素:";
cin>>current->data;
};
template <class T>
void List<T>::Output(){
LinkNode<T> * current=first->link;
while (current!=NULL){
cout<<" "<<current->data<<" "<<endl;
current=current->link;
}
};
template <class T>
void Combine(List<T> & a,List<T> & b,List<T> & c)
{
LinkNode<T> *current1=a.GetHead();
LinkNode<T> *current2=b.GetHead();
LinkNode<T> *current3=c.GetHead();
if(current1->link!=NULL&¤t2->link!=NULL)
{
current1=current1->link;
current2=current2->link;
while(current1!=NULL&¤t2!=NULL)
{
if(current1->data<current2->data)
{
current3->link=current1;
current1=current1->link;
}
else{
current3->link=current2;
current2=current2->link;
}
}
}
};
void main(){
List<int> L1,L2,L3;
L1.Input();
L2.Input();
cout<<"L1鏈表為:";
L1.Output();
cout<<"B鏈表為:";
L2.Output();
Combine(L1,L2,L3);
cout<<"m,n合并后應為A:";
L3.Output();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/132760.html
標籤:基礎類
