与心灵对话
posts - 195, comments - 34, trackbacks - 0, articles - 1
导航
BlogJava
首页
新随笔
联系
聚合
管理
<
2010年4月
>
日
一
二
三
四
五
六
28
29
30
31
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
1
2
3
4
5
6
7
8
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(14)
给我留言
查看公开留言
查看私人留言
随笔分类
“智能”方向(6)
C++ &VC(18)
Databases(1)
Englisth(1)
Java(23)
matalb相关(8)
WebService(2)
可伸缩视频编码(3)
好文章(35)
对话心灵(12)
智慧岛(14)
算法编程(20)
随笔档案
2011年5月 (1)
2010年9月 (3)
2010年7月 (1)
2010年6月 (2)
2010年5月 (5)
2010年4月 (7)
2010年1月 (2)
2009年12月 (3)
2009年11月 (18)
2009年10月 (15)
2009年9月 (2)
2009年8月 (4)
2009年7月 (5)
2009年6月 (3)
2009年5月 (2)
2009年4月 (4)
2009年3月 (7)
2009年2月 (2)
2009年1月 (3)
2008年12月 (8)
2008年11月 (15)
2008年10月 (4)
2008年9月 (1)
2008年8月 (2)
2008年7月 (2)
2008年6月 (13)
2008年5月 (1)
2008年4月 (1)
2008年3月 (4)
2008年1月 (3)
2007年12月 (2)
2007年11月 (4)
2007年10月 (5)
2007年9月 (3)
2007年8月 (9)
2007年7月 (7)
2007年6月 (8)
2007年5月 (4)
2007年4月 (8)
2006年5月 (1)
文章档案
2007年4月 (1)
相册
我的偶像
收藏夹
收藏1
技术基础
Javaer
Java线程
深度理解图像blog
技术相关
达人:编程汇总javalet
360个人图书馆
EJB3
Gossip良葛格
java Google资源多
Matrix67一个聪明的人
My Space,My mind 巫晓福
TopLanguage刘未鹏组织
Vincent'sBlog java基础强人
ye话连篇
我在CSDN的Blog
郑莎莎
研究方向
石缝间的生命
算法类
acm高人
byvoid.com
byvoidNOIP2000-2007 全部题解
LittleDS/
PKU很多的一个人
POJer
woodfish1988
搜索
最新评论
1. re: 求数组中最长递增子序列
这是原创麽?但是如果要输出LIS的元素..2 3 7 6 8 4 5 9 1的输出结果不正确吖~怎么改进才可以得到正确的序列呢?
--琉璃囧
2. re: 不要和爱过的人说狠话!
评论内容较长,点击标题查看
--nn
3. re: know and do reading notes
评论内容较长,点击标题查看
--alex adams
4. re: MATLAB GUI编程中几个有用的程序段
Fine
--ncepuyuyu
5. re: 好歌分享
评论内容较长,点击标题查看
--Sandy Alex
阅读排行榜
1. 沉思于《沉思录》meditations:若干读后感(6151)
2. MATLAB GUI编程中几个有用的程序段(4646)
3. C++ placement new 用法举例zz(3793)
4. 最短路径 之 SPFA算法 zz(2954)
5. 求数组中最长递增子序列(2910)
评论排行榜
1. 转:三十人生的,苗人凤求婚(5)
2. 不要和爱过的人说狠话!(3)
3. 一则笑话,又是关于咱程序员的(2)
4. zz清华校长送给毕业生的五句话(2)
5. zz:35岁前成功的12条黄金法则(2)
CSingleList的类实现,可以丰富起来
Posted on 2010-04-16 10:30
小强摩羯座
阅读(177)
评论(0)
编辑
收藏
所属分类:
C++ &VC
1
2
3
//
realize a SingleList class
4
/**/
/*
5
实现方法
6
add()
7
add2Head(dd);
8
del
9
lastN
10
length();
11
reverse();//实现单链表反转
12
*/
13
#include
<
iostream
>
14
#include
<
cassert
>
15
#include
<
typeinfo
>
16
17
using
namespace
std;
18
19
#define
DataType int
20
21
class
CSingleList
22
{
23
private
:
24
typedef
struct
Node
25
{
26
DataType data;
27
Node
*
next;
28
}
;
29
Node
*
pHead;
30
31
public
:
32
CSingleList()
33
{
34
pHead
=
NULL;
35
}
36
CSingleList
&
add(DataType data)
37
{
38
if
( pHead
==
NULL)
39
{
40
pHead
=
new
Node;
41
pHead
->
data
=
data;
42
}
43
else
44
{
45
Node
*
p
=
pHead;
46
while
(p
->
next
!=
NULL )
47
{
48
p
=
p
->
next;
49
}
50
Node
*
q
=
new
Node;
51
q
->
data
=
data;
52
q
->
next
=
NULL;
53
p
->
next
=
q;
54
}
55
return
*
this
;
56
}
57
CSingleList
&
add2Head(DataType data)
58
{
59
if
( pHead
==
NULL)
60
{
61
pHead
=
new
Node;
62
assert(pHead);
63
pHead
->
data
=
data;
64
pHead
->
next
=
NULL;
65
}
66
else
67
{
68
Node
*
q
=
new
Node;
69
assert(q);
70
q
->
data
=
data;
71
q
->
next
=
pHead;
72
pHead
=
q;
73
}
74
return
*
this
;
75
}
76
void
print(
const
char
*
note
=
"
"
)
77
{
78
Node
*
p
=
pHead;
79
80
cout
<<
"
----------
"
<<
note
<<
"
---------
"
<<
endl;
81
while
(p
!=
NULL
&&
p
->
next
!=
NULL)
82
{
83
cout
<<
p
->
data
<<
"
,
"
;
84
p
=
p
->
next;
85
}
86
cout
<<
p
->
data
<<
endl;;
87
}
88
int
length()
89
{
90
int
n
=
0
;
91
Node
*
p
=
pHead;
92
while
( p
!=
NULL)
93
{
94
n
++
;
95
p
=
p
->
next;
96
}
97
return
n;
98
}
99
100
CSingleList
&
del(DataType data)
101
{
102
if
( pHead
==
NULL)
return
*
this
;
103
//
数据在在头结点
104
if
(pHead
->
data
==
data)
105
{
106
delete pHead;
107
pHead
=
NULL;
108
return
*
this
;
109
}
110
Node
*
p,
*
q;
111
p
=
pHead;
112
q
=
p
->
next;
113
while
( q
!=
NULL)
114
{
115
if
(q
->
data
==
data)
116
break
;
117
p
=
q;
118
q
=
q
->
next;
119
}
120
//
point to the q's next
121
p
->
next
=
q
->
next;
122
delete q;
123
124
return
*
this
;
125
}
126
127
CSingleList
&
reverse()
128
{
129
Node
*
p1,
*
p2,
*
p3;
130
//
如果长度小于2不用反转
131
if
( pHead
==
NULL
||
pHead
->
next
==
NULL)
132
return
*
this
;
133
134
p1
=
pHead;
135
p2
=
pHead
->
next;
136
while
(p2
!=
NULL)
137
{
138
p3
=
p2
->
next;
139
p2
->
next
=
p1;
140
p1
=
p2;
141
p2
=
p3;
142
}
143
pHead
->
next
=
NULL;
144
pHead
=
p1;
145
return
*
this
;
146
}
147
//
得到链表中的倒数第N个
148
DataType getLastN(
int
lastN)
149
{
150
reverse();
151
Node
*
p
=
pHead;
152
for
(
int
i
=
1
; i
<
lastN;i
++
)
153
{
154
if
(p
==
NULL)
return
-
1
;
155
p
=
p
->
next;
156
}
157
reverse();
158
if
(p
!=
NULL)
return
p
->
data;
159
return
-
1
;
160
}
161
//
using 2 pointer to speed
162
DataType getLastN2(
int
lastN)
163
{
164
Node
*
p
=
pHead;
165
for
(
int
i
=
1
; i
<
lastN;i
++
)
166
{
167
if
(p
==
NULL)
return
-
1
;
168
p
=
p
->
next;
169
}
170
171
if
(p
!=
NULL)
172
{
173
Node
*
q
=
pHead;
174
while
( p
->
next
!=
NULL)
175
{
176
q
=
q
->
next;
177
p
=
p
->
next;
178
}
179
return
q
->
data;
180
}
181
return
-
1
;
182
}
183
//
for singleList, /使用选择排序吧
184
CSingleList
&
selectSort()
185
{
186
if
( pHead
==
NULL)
return
*
this
;
187
for
( Node
*
p
=
pHead;p
!=
NULL;p
=
p
->
next)
188
{
189
Node
*
minNode
=
p;
190
for
(Node
*
q
=
p
->
next; q
!=
NULL; q
=
q
->
next)
191
{
192
if
( q
->
data
<
minNode
->
data)
193
{
194
minNode
=
q;
195
}
196
}
197
cout
<<
"
min =
"
<<
minNode
->
data
<<
endl;
198
swap( minNode
->
data, p
->
data);
199
}
200
return
*
this
;
201
}
202
CSingleList
&
insertSort()
203
{
204
if
( pHead
==
NULL)
return
*
this
;
205
206
for
(Node
*
p
=
pHead
->
next; p
!=
NULL;p
=
p
->
next)
207
{
208
if
( p
->
data
>
pHead
->
data)
//
209
{
210
DataType tmp
=
pHead
->
data;
211
for
(Node
*
q
=
pHead; q
!=
p;q
=
q
->
next)
212
{
213
214
}
215
}
216
}
217
}
218
}
;
219
void
swap(DataType
&
a, DataType
&
b)
220
{
221
a
=
a
+
b
-
( b
=
a);
222
}
223
224
225
int
main()
226
{
227
CSingleList myList1;
228
myList1.add(
3
).add(
5
).add(
34
).add(
24334
).add2Head(
88
);
229
230
myList1.print();
231
232
cout
<<
myList1.length()
<<
endl;
233
234
myList1.del(
5
).del(
34
);
235
236
myList1.print();
237
238
myList1.reverse();
239
myList1.print();
240
myList1.add(
233
).add(
256
);
241
myList1.print();
242
243
cout
<<
"
last 2 :
"
<<
myList1.getLastN2(
2
);
244
245
246
myList1.selectSort();
247
myList1.print(
"
afte sort
"
);
248
249
return
0
;
250
}
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
C++ placement new 用法举例zz
字符串拆分的中文处理问题zz
关于C++中文字符的处理
gameloft??
C++一些用法整理
CSingleList的类实现,可以丰富起来
指向指针的引用
zz泛型编程:源起、实现与意义
zz:vc2005经验
预编译头文件 zz
Powered by:
BlogJava
Copyright © 小强摩羯座