xingkongyun
星空陨的程序小站
C++博客
首页
新随笔
联系
聚合
管理
随笔 - 8 文章 - 26 trackbacks - 0
<
2024年11月
>
日
一
二
三
四
五
六
27
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
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(4)
给我留言
查看公开留言
查看私人留言
随笔档案
2009年12月 (1)
2009年9月 (1)
2009年4月 (1)
2008年12月 (1)
2008年11月 (1)
2008年10月 (2)
2008年9月 (1)
文章分类
C++语言(6)
Directx(1)
STL(2)
VC++
Windows编程(4)
操作系统(4)
数据结构(10)
文章档案
2008年11月 (1)
2008年10月 (3)
2008年9月 (10)
2008年7月 (1)
2008年6月 (13)
相册
图示
C++语言
C++的罗浮宫
搜索
最新评论
1. re: 卸载远程线程中的DLL
水平很高,学习了。
--王小亮
2. re: 卸载远程线程中的DLL
评论内容较长,点击标题查看
--疑问
3. re: NASM 与 VC 混合编程的小结
收下了
--5545645
4. re: VC++内联汇编(MSDN相关内容完整翻译)
谢谢
--5545645
5. re: 安全密码框的设计
评论内容较长,点击标题查看
--徐胖子
阅读排行榜
1. VC++内联汇编(MSDN相关内容完整翻译)(9233)
2. 保护模式与实模式的切换(7993)
3. 安全密码框的设计(4937)
4. NASM 与 VC 混合编程的小结(3890)
5. SYSENTER指令相关(大段的转载-_-)(3598)
评论排行榜
1. 通过虚函数表访问私有虚函数(10)
2. 安全密码框的设计(8)
3. 保护模式与实模式的切换(4)
4. VC++内联汇编(MSDN相关内容完整翻译)(1)
5. NASM 与 VC 混合编程的小结(1)
链表类---转载
#ifndef LIST_H
#define LIST_H
template
<
typename elemtype
>
class
list_item
{
public
:
list_item( elemtype, list_item
<
elemtype
>*
);
list_item(
const
list_item
<
elemtype
>&
);
const
elemtype date ()
const
;
const
list_item
<
elemtype
>*
next()
const
;
void
get_date (
const
elemtype );
void
get_next (
const
list_item
<
elemtype
>*
);
void
operator
=
(
const
list_item
<
elemtype
>&
);
private
:
elemtype _date;
list_item
<
elemtype
>
*
_next;
}
;
//
单链表数据项类
//
数据项类代码实现
template
<
typename elemtype
>
list_item
<
elemtype
>
::list_item( elemtype ia
=
0
,
list_item
<
elemtype
>
*
p
=
0
)
{
get_date( ia );
if
( p
==
NULL )
get_next( NULL );
else
{
get_next( p
->
next() );
p
->
get_next(
this
);
}
}
template
<
typename elemtype
>
const
elemtype
list_item
<
elemtype
>
::date()
const
{
return
_date;
}
template
<
typename elemtype
>
const
list_item
<
elemtype
>*
list_item
<
elemtype
>
::
next()
const
{
return
_next;
}
template
<
typename elemtype
>
void
list_item
<
elemtype
>
::get_date(
const
elemtype de )
{
_date
=
de;
}
template
<
typename elemtype
>
void
list_item
<
elemtype
>
::
get_next(
const
list_item
<
elemtype
>
*
pev )
{
_next
=
( list_item
<
elemtype
>*
)pev;
}
template
<
typename elemtype
>
class
list
{
public
:
list();
list(
const
list
<
elemtype
>&
);
~
list();
const
int
size()
const
;
const
bool empty()
const
;
void
insert(
const
elemtype,
const
elemtype );
void
insert_front(
const
elemtype );
void
insert_end(
const
elemtype );
void
remove(
const
elemtype );
void
remove_all();
void
remove_front();
void
print()
const
;
const
list_item
<
elemtype
>*
find(
const
elemtype );
void
operator
=
(
const
list
<
elemtype
>&
);
private
:
//
void
down_size();
void
add_size();
//
list_item
<
elemtype
>
*
at_front;
list_item
<
elemtype
>
*
at_end;
list_item
<
elemtype
>
*
at_move;
int
_size;
}
;
//
链表类定义
//
函数实现代码
//
私有函数集合
template
<
typename elemtype
>
void
list
<
elemtype
>
::add_size()
{
++
_size;
}
template
<
typename elemtype
>
void
list
<
elemtype
>
::down_size()
{
--
_size;
}
//
公有函数集合
template
<
typename elemtype
>
list
<
elemtype
>
::list()
{
at_front
=
NULL;
at_end
=
NULL;
_size
=
0
;
}
template
<
typename elemtype
>
list
<
elemtype
>
::
~
list()
{
remove_all();
}
template
<
typename elemtype
>
const
bool list
<
elemtype
>
::empty()
const
{
return
size()
==
0
?
false
:
true
;
}
template
<
typename elemtype
>
const
int
list
<
elemtype
>
::size()
const
{
return
_size;
}
template
<
typename elemtype
>
void
list
<
elemtype
>
::insert_front(
const
elemtype iva )
{
list_item
<
elemtype
>
*
pv
=
new
list_item
<
elemtype
>
( iva,
0
);
if
(
!
at_front )
{
at_front
=
at_end
=
pv;
}
else
{
pv
->
get_next( at_front );
at_front
=
pv;
}
add_size();
}
template
<
typename elemtype
>
void
list
<
elemtype
>
::insert_end(
const
elemtype iva )
{
if
( at_end
==
NULL)
{
at_end
=
at_front
=
new
list_item
<
elemtype
>
( iva,
0
);
}
else
at_end
=
new
list_item
<
elemtype
>
( iva, at_end );
add_size();
}
template
<
typename elemtype
>
void
list
<
elemtype
>
::
insert(
const
elemtype ixa,
const
elemtype iva )
{
list_item
<
elemtype
>
*
pev
=
( list_item
<
elemtype
>*
)find( iva );
if
( pev
==
NULL )
{
cerr
<<
"
err!
"
<<
endl;
return
;
}
if
( pev
==
at_front )
insert_front( ixa );
else
{
new
list_item
<
elemtype
>
( ixa, pev );
add_size();
}
}
template
<
typename elemtype
>
const
list_item
<
elemtype
>*
list
<
elemtype
>
::
find(
const
elemtype iva )
{
list_item
<
elemtype
>
*
at_move
=
at_front;
while
( at_move
!=
NULL )
{
if
( at_move
->
date()
==
iva )
return
at_move;
at_move
=
( list_item
<
elemtype
>*
)at_move
->
next();
}
return
NULL;
}
template
<
typename elemtype
>
void
list
<
elemtype
>
::remove_front()
{
if
( at_front )
{
list_item
<
elemtype
>
*
pev
=
at_front;
at_front
=
( list_item
<
elemtype
>*
)at_front
->
next();
delete pev;
down_size();
}
}
template
<
typename elemtype
>
void
list
<
elemtype
>
::remove( elemtype iva )
{
list_item
<
elemtype
>
*
pev
=
at_front;
while
( pev
&&
pev
->
date()
==
iva )
{
pev
=
( list_item
<
elemtype
>*
)pev
->
next();
remove_front();
}
if
(
!
pev )
return
;
list_item
<
elemtype
>
*
prv
=
pev;
pev
=
( list_item
<
elemtype
>*
)pev
->
next();
while
( pev )
{
if
( pev
->
date()
==
iva )
{
prv
->
get_next( pev
->
next() );
down_size();
delete pev;
pev
=
( list_item
<
elemtype
>*
)prv
->
next();
if
( pev
!=
NULL )
{
at_end
=
prv;
return
;
}
}
else
{
prv
=
pev;
pev
=
( list_item
<
elemtype
>*
)pev
->
next();
}
}
}
template
<
typename elemtype
>
void
list
<
elemtype
>
::remove_all()
{
while
( at_front )
remove_front();
_size
=
0
;
at_front
=
at_end
=
NULL;
}
template
<
typename elemtype
>
void
list
<
elemtype
>
::print()
const
{
list_item
<
elemtype
>
*
pev
=
at_front;
cout
<<
'
[
'
<<
size()
<<
'
]
'
;
cout
<<
'
{
'
;
for
(
int
ix
=
0
; pev
&&
ix
<
size();
++
ix )
{
cout
<<
pev
->
date()
<<
'
'
;
pev
=
( list_item
<
elemtype
>*
)pev
->
next();
}
cout
<<
'
}
'
<<
endl;
}
#endif
转载自:
http://www.cppblog.com/mzty/archive/2005/10/28/870.html
posted on 2008-06-18 22:05
杨彬彬
阅读(333)
评论(0)
编辑
收藏
引用
所属分类:
数据结构
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
循环队列实现
数据结构栈简单实现(基于链表)
栈结构简单实现(基于数组)
单向带头结点循环链表实现
关于红黑树(r-b树)的相关资料
二叉搜索树实现
二叉树实现
最大高度优先左高树(HBLT)实现
最大堆实现
链表类---转载
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理