f1406.cpp
资源名称:c.rar [点击查看]
上传用户:puke2000
上传日期:2022-07-25
资源大小:912k
文件大小:2k
源码类别:
C#编程
开发平台:
Visual C++
- //=====================================
- // f1406.cpp
- // using class template
- //=====================================
- #include<iostream>
- using namespace std;
- //-------------------------------------
- template<typename T>
- struct Node{
- Node(const T& d):c(d),next(0),pref(0){}
- T c;
- Node *next, *pref;
- };//-----------------------------------
- template<typename T>
- class List{
- Node<T> *first, *last;
- public:
- List();
- void add(const T& c);
- void remove(const T& c);
- Node<T>* find(T& c)const;
- void print()const;
- ~List();
- };//-----------------------------------
- template<typename T>
- List<T>::List():first(0),last(0){}
- //-------------------------------------
- template<typename T>
- void List<T>::add(const T& n){
- Node<T>* p = new Node<T>(n);
- p->next = first; first = p;
- (last ? p->next->pref : last) = p;
- }//------------------------------------
- template<typename T>
- void List<T>::remove(const T& n){
- if(!(Node<T>* p = find(n))) return;
- (p->next ? p->next->pref : last) = p->pref;
- (p->pref ? p->pref->next : first) = p->next;
- delete p;
- }//------------------------------------
- template<typename T>
- Node<T>* List<T>::find(T& n)const{
- for(Node<T>* p=first; p; p=p->next)
- if(p->c==n) return p;
- return 0;
- }//------------------------------------
- template<typename T>
- List<T>::~List(){
- for(Node<T>* p; p=first; delete p)
- first = first->next;
- }//------------------------------------
- template<typename T>
- void List<T>::print()const{
- for(Node<T>* p=first; p; p=p->next)
- cout<<p->c<<" ";
- cout<<"n";
- }//------------------------------------
- int main(){
- List<double> dList;
- dList.add(3.6);
- dList.add(5.8);
- dList.print();
- List<int> iList;
- iList.add(5);
- iList.add(8);
- iList.print();
- }//====================================