大胖的部落格
Just a note
C++博客
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
112 随笔 :: 0 文章 :: 3 评论 :: 0 Trackbacks
<
2009年7月
>
日
一
二
三
四
五
六
28
29
30
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
1
2
3
4
5
6
7
8
留言簿
给我留言
查看公开留言
查看私人留言
随笔分类
Algorithm(13)
(rss)
C#(13)
(rss)
C++(22)
(rss)
Design Pattern(23)
(rss)
Others(14)
(rss)
STL(9)
(rss)
Technical(2)
(rss)
UML(2)
(rss)
Win32(18)
(rss)
Reference
Windows XP command line
最新评论
1. re: 在TCL命令行中调用C函数
@Kenny
实在不好意思,时间太过久远,本人已好久没有接触TCL……
--大胖
2. re: 在TCL命令行中调用C函数
請問如何溝通array 變數
Q:1
tcl array in C
Q:2
C array in tcl
懇求指導
--Kenny
3. re: 在TCL命令行中调用C函数
谢谢!
--1232
数据结构 ---- 单向链表
#include
"
stdafx.h
"
#include
<
iostream
>
using
namespace
std;
template
<
class
T
>
struct
ChainNode
{
T data;
ChainNode
<
T
>*
link;
}
;
template
<
class
T
>
class
Chain
{
public
:
Chain()
{first
=
NULL;}
~
Chain();
bool
IsEmpty()
const
{
return
(NULL
==
first);}
int
Length()
const
;
bool
Find(
int
x, T
&
t)
const
;
//
寻找第x个元素,值赋给t
int
Search(
const
T
&
t)
const
;
//
返回值为t的元素的索引
Chain
<
T
>&
Insert(
int
i,
const
T
&
t);
//
在第i个位置插入元素t
Chain
<
T
>&
Delete(
int
i, T
&
t);
//
删除第i个位置的元素,其值赋给t
Chain
<
T
>&
Reverse();
//
翻转链表
//
重载全局<<操作符,不是类成员函数
friend ostream
&
operator
<<
(ostream
&
out
,
const
Chain
<
T
>&
chain)
{
int
iLength
=
chain.Length();
ChainNode
<
T
>*
node
=
chain.first;
while
((
0
!=
iLength)
&&
(NULL
!=
node))
{
--
iLength;
out
<<
node
->
data
<<
'
,
'
;
node
=
node
->
link;
}
return
out
;
}
private
:
void
Output(ostream
&
out
)
const
;
ChainNode
<
T
>*
first;
}
;
template
<
class
T
>
Chain
<
T
>
::
~
Chain()
{
ChainNode
<
T
>*
next
=
NULL;
while
(NULL
!=
first)
{
next
=
first
->
link;
delete first;
first
=
next;
}
}
template
<
class
T
>
int
Chain
<
T
>
::Length()
const
{
int
i
=
0
;
ChainNode
<
T
>*
next
=
first;
while
(NULL
!=
next)
{
next
=
next
->
link;
++
i;
}
return
i;
}
template
<
class
T
>
Chain
<
T
>&
Chain
<
T
>
::Insert(
int
i,
const
T
&
t)
{
if
(i
<
0
)
{
cerr
<<
"
Insert index error!
"
<<
endl;
return
*
this
;
}
ChainNode
<
T
>*
node
=
new
ChainNode
<
T
>
;
node
->
data
=
t;
if
(NULL
==
first)
{
first
=
node;
node
->
link
=
NULL;
return
*
this
;
}
if
(
0
==
i)
{
node
->
link
=
first;
first
=
node;
return
*
this
;
}
ChainNode
<
T
>*
next
=
first;
while
((i
>
1
)
&&
(NULL
!=
next
->
link))
{
--
i;
next
=
next
->
link;
}
node
->
link
=
next
->
link;
next
->
link
=
node;
return
*
this
;
}
template
<
class
T
>
int
Chain
<
T
>
::Search(
const
T
&
t)
const
{
int
i
=
0
;
ChainNode
<
T
>*
next
=
first;
while
(NULL
!=
next)
{
++
i;
if
(t
==
next
->
data)
break
;
next
=
next
->
link;
}
if
(NULL
==
next)
{
return
0
;
}
return
i;
}
template
<
class
T
>
bool
Chain
<
T
>
::Find(
int
x, T
&
t)
const
{
if
(x
<
1
)
{
return
false
;
}
ChainNode
<
T
>*
next
=
first;
while
((x
>
1
)
&&
(NULL
!=
next))
{
--
x;
next
=
next
->
link;
}
if
(NULL
==
next)
{
return
false
;
}
t
=
next
->
data;
return
true
;
}
template
<
class
T
>
Chain
<
T
>&
Chain
<
T
>
::Delete(
int
i, T
&
t)
{
if
(i
<
1
)
{
cerr
<<
"
Delete index error!
"
<<
endl;
return
*
this
;
}
if
(NULL
==
first)
{
cerr
<<
"
Empty Chain!
"
<<
endl;
return
*
this
;
}
if
(
1
==
i)
{
ChainNode
<
T
>*
pf
=
first;
first
=
first
->
link;
t
=
pf
->
data;
delete pf;
return
*
this
;
}
ChainNode
<
T
>*
next
=
first;
while
((i
>
2
)
&&
(NULL
!=
next
->
link
->
link))
{
--
i;
next
=
next
->
link;
}
ChainNode
<
T
>*
temp
=
next
->
link;;
next
->
link
=
next
->
link
->
link;
t
=
temp
->
data;
delete temp;
return
*
this
;
}
template
<
class
T
>
Chain
<
T
>&
Chain
<
T
>
::Reverse()
{
if
((NULL
==
first)
||
(
1
==
Length()))
{
return
*
this
;
}
ChainNode
<
T
>*
next
=
first
->
link;
ChainNode
<
T
>*
tail
=
first;
while
(NULL
!=
tail
->
link)
{
tail
->
link
=
next
->
link;
next
->
link
=
first;
first
=
next;
next
=
tail
->
link;
}
return
*
this
;
}
int
main()
{
Chain
<
int
>
c;
c.Insert(
0
,
4
);
c.Insert(
1
,
5
);
c.Insert(
2
,
6
);
c.Insert(
0
,
3
);
c.Insert(
7
,
7
);
cout
<<
c
<<
endl;
c.Reverse();
cout
<<
c
<<
endl;
return
0
;
}
posted on 2009-06-29 10:31
大胖
阅读(210)
评论(0)
编辑
收藏
引用
所属分类:
Algorithm
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
尾递归
链表操作
哈希表
内部排序算法
数据结构 ---- 堆栈
数据结构 ---- 队列
数据结构 ---- 线性表
数据结构 ---- 单向链表
字符串逆转
计算n!的位数
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Powered by:
C++博客
Copyright © 大胖