标题:拷贝构造函数和赋值运算符函数怎么实现?
只看楼主
积木10086
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2013-11-22
结帖率:66.67%
 问题点数:0 回复次数:1 
拷贝构造函数和赋值运算符函数怎么实现?
1 #include <iostream>
  2 #include <stdexcept>
  3 #include <exception>
  4 using namespace std;
  5
  6 typedef int T;
  7
  8 class List{
  9 private:
 10    struct Node{  //内部类
 11       T data;
 12       Node* next;
 13       Node(const T& d):data(d),next(){}
 14    };
 15    Node *head;  //头指针
 16    int sz;      //元素个数
 17 public:
 18    List(void):head(NULL),sz(0){}
 19    ~List(void){
 20       clear();
 21    }
 22    //拷贝构造函数
 23    List(const List& l){
 24
 25    }
 26    //赋值运算符函数
 27    List& operator= (const List& l){
 28
 29    }
 30    //向链表中插入一个元素
 31    void insert(const T& d){
 32       Node* pn = new Node(d);
 33       if(head == NULL){
 34          head = pn;
 35          sz++;
 36          return;
 37       }
 38       Node* p = head;
 39       while(p->next){
 40          p = p->next;
 41       }
 42       p->next = pn;
 43       sz++;
 44    }
 45    //打印链表
 46    void travel(void){
 47       Node* p = head;
 48       while(p){
 49          cout << p->data << ' ';
 50          p = p->next;
 51       }
 52       cout << endl;
 53    }
 54    //在指定位置增加元素
 55    bool insert(int pos,const T& d){
 56       if(pos < 0 || pos > sz){
 57          return false;
 58       }
 59       Node* p = head;
 60       Node* pn = new Node(d);
 61       if(pos == 0){
 62          pn->next = head;
 63          head = pn;
 64          sz++;
 65          return true;
 66       }
 67       for(int i=0;i<pos-1;++i){
 68          p = p->next;
 69       }
 70       pn->next = p->next;
 71       p->next = pn;
 72       sz++;
 73       return true;
 74    }
 75    //清空链表
 76    void clear(void){
 77       Node* p = head;
 78       while(head){
 79          head = head->next;
 80          delete p;
 81          p = head;
 82       }
 83       sz = 0;
 84    }
 85    //删除节点
 86    bool erase(int pos){
 87       if(pos < 0 || pos >= sz){
 88          return false;
 89       }
 90       Node* p = head;
 91       if(pos == 0){
 92          head = head->next;
 93          delete p;
 94          sz--;
 95          return true;
 96       }
 97       for(int i=0;i<pos-1;++i){
 98          p = p->next;
 99       }
100       Node* q = p->next;
101       p->next = q->next;
102       delete q;
103       sz--;
104       return true;
105    }
106    T& at(int pos)throw(out_of_range){
107       if(pos < 0 || pos >= sz){
108          throw out_of_range("out");
109       }
110       Node* p = head;
111       for(int i=0;i<pos;++i){
112          p = p->next;
113       }
114       return p->data;
115    }
116    int size(void){
117       return sz;
118    }
119 };
搜索更多相关主题的帖子: private include public color 元素 
2014-06-26 08:41
积木10086
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2013-11-22
得分:0 
求助!!大神能不能帮助一下我?
2014-06-26 08:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-433368-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.348939 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved