设计一个单向链表类模板,节点数据域中数据从小到大排列,并设计插入、删除节点的成员函数。
主函数中创建单向链表类对象,进行删除一个元素,插入一个元素测试。
template<typename T>class List;
int main(){
template<typename T>class Node{
T info;
Node<T> *li
public:
Node();
Node(const T & data);
friend class List<T>;
};
template<typename T>class List{
Node<T> *head;
public:
List();
~List();
void MakeEmpty();
Node<T>* Find(T data);
void PrintList();
void InsertOrder(Node<T> *p);
Node<T>* CreatNode(T data);
Node<T>* DeleteNode(Node<T>* p);
};
在主函数中
Node<int> * P1;
List<int> list1;
int a[10]={20,12,0,-5,9,-18,6,11,5,3},i,j;
for(i=0;i<10;i++){
P1=list1.CreatNode(a[i]);
list1.InsertOrder(P1);
}
list1.PrintList();
cout<<"请输入一个要删除的整数"<<endl;
cin>>j;
P1=list1.Find(j);
if(P1!=NULL){
P1=list1.DeleteNode(P1);
delete P1;
list1.PrintList();
}
else cout<<"未找到"<<endl;
cout<<"请输入一个要求插入的整数"<<endl;
cin>>j;
P1=list1.CreatNode(j);
list1.InsertOrder(P1);
list1.PrintList();
list1.MakeEmpty();//Çå¿Õlist1
list1.PrintList();
return 0;
}