C ++使用模板写的一个List
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
|
template < class T>
class List
{
private :
struct Node
{
T data;
Node *next;
};
//head
Node *head;
//size
int length;
//process
Node *p;
//temp
Node *q;
public :
List()
{
head = NULL;
length = 0;
p = NULL;
}
void add(T t)
{
if (head == NULL)
{
q = new Node();
q->data = t;
q->next = NULL;
length ++ ;
head = q ;
p = head;
}
else
{
q = new Node();
q->data = t;
q->next = NULL;
length ++;
p -> next = q;
p = q;
}
}
void remove ( int n)
{
if (n >= length )
{
return ;
}
length -- ;
//删除头节点
if (n == 0)
{
q = head ;
head = head -> next;
delete (q);
}
else
{
q = head;
for ( int i = 0 ; i < n-1 ; i++)
{
q = q -> next;
}
Node *t = q ->next;
q->next = q->next ->next;
delete (t);
}
//
p = head;
if (p != NULL)
{
while (p->next != NULL)
{
p = p->next;
}
}
}
int getSize()
{
return length;
}
int getLength()
{
return getSize();
}
T get( int n)
{
q = head;
for ( int i = 0 ;i < n ; i++)
{
q = q->next;
}
return q->data;
}
};
|
调用方式如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
List<Stu>list;
Stu stu1;
Stu stu2;
Stu stu3;
stu1.username = "1" ;
stu2.username = "2" ;
stu3.username = "3" ;
list.add(stu1);
list. remove (0);
list.add(stu2);
list.add(stu3);
for ( int i = 0 ;i < list.getSize() ; i ++)
{
cout << list.get(i).username;
}
|
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
原文链接:http://blog.csdn.net/huplion/article/details/51417665