template<class T>
LinkedList<T>::LinkedList(LinkedList<T> &L) {
T value;
LinkNode<T> *srcptr = L.getHead ();
LinkNode<T> *destptr = first = new LinkNode<T>;
while(srcptr->link != null){
value = srcptr->link ->data;
destptr->link =new LinkNode<T>(value);
destptr = destptr->link ;
srcptr = srcptr->link ;
}
destptr->link = null;
}
template<class T>
LinkNode<T> *LinkedList<T>::Locate(int i) {
if(i<0)return null;
LinkNode<T> *current = first;int k = 0;
while(current !=null && k<i){
current = current->link ;k++
}
return current;
}
template<class T >
bool LinkedList<T>::Insert(int i, T &x) {
LinkNode<T> *current= Locate(i);
if(current==null)return false;
LinkNode<T> *newNode = new LinkNode<T>(x);
if(newNode == null){cerr<<"存储分配失败!"<<endl;exit(1);}
newNode->link = current->link ;
current->link = newNode;
return true;
}
template<class T>
bool LinkedList<T>::Remove(int i, T &x) {
LinkNode<T> *current = Locate(i-1);
if(current == null|| current->link == null) return false;
LinkNode<T> *del = current->link ;
current->link = del->link ;
x = del->data ;delete del;
return true;
}
template<class T>
ool LinkedList<T>::getData(int i, T &x) const {
if(i<=0)return null;
LinkNode <T> *current = Locate(i);
if(current == null)return false;
else{x = current->data ;return true;}
}
LinkedList<T>::LinkedList(LinkedList<T> &L) {
T value;
LinkNode<T> *srcptr = L.getHead ();
LinkNode<T> *destptr = first = new LinkNode<T>;
while(srcptr->link != null){
value = srcptr->link ->data;
destptr->link =new LinkNode<T>(value);
destptr = destptr->link ;
srcptr = srcptr->link ;
}
destptr->link = null;
}
template<class T>
LinkNode<T> *LinkedList<T>::Locate(int i) {
if(i<0)return null;
LinkNode<T> *current = first;int k = 0;
while(current !=null && k<i){
current = current->link ;k++
}
return current;
}
template<class T >
bool LinkedList<T>::Insert(int i, T &x) {
LinkNode<T> *current= Locate(i);
if(current==null)return false;
LinkNode<T> *newNode = new LinkNode<T>(x);
if(newNode == null){cerr<<"存储分配失败!"<<endl;exit(1);}
newNode->link = current->link ;
current->link = newNode;
return true;
}
template<class T>
bool LinkedList<T>::Remove(int i, T &x) {
LinkNode<T> *current = Locate(i-1);
if(current == null|| current->link == null) return false;
LinkNode<T> *del = current->link ;
current->link = del->link ;
x = del->data ;delete del;
return true;
}
template<class T>
ool LinkedList<T>::getData(int i, T &x) const {
if(i<=0)return null;
LinkNode <T> *current = Locate(i);
if(current == null)return false;
else{x = current->data ;return true;}
}