标题:拷贝构造函数和赋值运算符函数怎么实现?
只看楼主
积木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 元素 
2014-06-26 11:34
积木10086
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2013-11-22
得分:0 
拷贝构造函数和赋值运算符函数怎么实现?
2014-06-26 11:34



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




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

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