📄 templtlk.cpp
字号:
//这个程序在本书所带软盘中,文件名为TEMPLTLK.CPP
//这个程序利用类模板实现不同数据类型的动态链表。
#include<iostream.h>
template<class T>
struct Node{ //定义链表中一个节点
T data;
Node *next;
};
template<class T1> //定义链表类模板
class List {
public:
List(void); //构造函数
void show(void);
Node<T1> *link(T1); //连接下一个节点
private:
Node<T1> *first; //指向链表的第一个节点
Node<T1> *end; //指向链表中的最后一个节点
};
template<class T1> List<T1> :: List(void)
//编写构造函数
{
first = end = NULL; //将链表初始化为空
}
template<class T1> void List<T1> :: show(void)
//编写成员子程序
{
Node<T1> *node; //产生一个指向链表的指针
node = first; //指向第一个节点
while (node) //显示链表中的所有数据直到node指向空为止
{
cout << node->data << endl;
node = node->next; //指向下一个节点
}
}
template<class T1> //编写成员子程序
Node<T1> *List<T1> :: link( T1 item)
{
Node<T1> *ptr = end; //产生一个指向end的指针
end = new Node<T1>; //产生一个新节点
if (first == NULL) //如果是一个空链表
first = end;
else
ptr->next = end; //使链表的最后一个节点的指针指向新产生的节点
if (end) //如果成功地产生了最后一个节点
{
end->next = NULL; //将新节点的指针指向空
end->data = item; //将数据赋予成员变量
}
return(end); //返回这个新节点的引用地址
}
void main(void)
{
List<char> ch_list; //产生一个字符链表
List<int> int_list; //产生一个整数链表
List<float> float_list; //产生一个实数链表
for (char ch = 'A'; ch <= 'Z'; ch++)
ch_list.link(ch); //调用成员子程序link()产生一个动态链表
cout <<"下面显示字符链表中的所有数据:" << endl;
ch_list.show(); //调用成员子程序show()显示链表中的所有数据
cout << endl;
for(int i = 0; i < 10; i++)
int_list.link(i);
cout <<"下面显示整数链表中的所有数据:" << endl;
int_list.show();
cout << endl;
for(i = 0; i< 10; i++)
float_list.link(i*3.141596);
cout <<"下面显示实数链表中的所有数据:" << endl;
float_list.show();
}
/*这个程序运行后将显示如下输出结果:
下面显示字符链表中的所有数据:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
下面显示整数链表中的所有数据:
0
1
2
3
4
5
6
7
8
9
下面显示实数链表中的所有数据:
0
3.1416
6.28319
9.42479
12.5664
15.708
18.8496
21.9912
25.1328
28.2744
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -