| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 572 人关注过本帖
标题:拷贝构造函数和赋值运算符函数怎么实现?
取消只看楼主 加入收藏
积木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
快速回复:拷贝构造函数和赋值运算符函数怎么实现?
数据加载中...
 
   



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

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