本文实例为大家分享了C++使用模板实现单链表的具体代码,供大家参考,具体内容如下
这一篇可以和上一篇 点击打开链接 模板实现单链表进行对比
看类外实现和类内实现的区别
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
#include <iostream> using namespace std; template < typename T> class CLink { public : class Node; CLink(); //无参的构造函数 void InsertHead(T data); //头插 void InsertTail(T data); //尾插 void Show(); //打印 ~CLink(); //析构 Node* Find(T val); //查找 private : class Node { public : Node(T data = 0); ~Node(){} public : T mdata; Node* pnext; }; Node* phead; }; //类外实现无参的构造 template < typename T> CLink<T>::CLink() { phead = new Node(); } //类外实现头插 template < typename T> void CLink<T>::InsertHead(T data) { Node* pNewNode = new Node(data); pNewNode->pnext = phead->pnext; phead->pnext = pNewNode; } //类外实现尾插 template < typename T> void CLink<T>::InsertTail(T data) { Node* pNewNode = new Node(data); Node* pCur = phead; while (pCur->pnext != NULL) { pCur = pCur->pnext; } pCur->pnext = pNewNode; } //类外实现打印函数 template < typename T> void CLink<T>::Show() { Node* pCur = phead->pnext; while (pCur != NULL) { cout << pCur->mdata << " " ; pCur = pCur->pnext; } cout << endl; } //类外实现析构函数 template < typename T> CLink<T>::~CLink() { Node* pCur = phead; Node* pNext = phead; while (pCur != NULL) { pNext = pCur->pnext; delete pCur; pCur = pNext; } phead = NULL; } //类外实现结点的构造 template < typename T> CLink<T>::Node::Node(T data) { mdata = data; pnext = NULL; } //类外实现查找函数 template < typename T> typename CLink<T>::Node* CLink<T>::Find(T val) { Node* pCur = phead->pnext; while (pCur != NULL) { if (pCur->mdata == val) { return pCur; } pCur = pCur->pnext; } return pCur; } int main() { CLink< int > link1; CLink< int > link2; for ( int i = 0;i < 10;i++) { link1.InsertHead(i + 1); link2.InsertTail(i * 2); } cout << "link1:" ; link1.Show(); cout << "link2:" ; link2.Show(); link1.Find(10); return 0; } |
运行结果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/MOON5555/article/details/79159516