只是罗列代码,大家都看的懂
1
//Node.h
2
//By Hafeyang
3
//该程序实现一个节点类
4
//
5
//头文件部分
6
#include <string>
7
#include <iostream>
8
#define null 0
9
using namespace std;
10
11
//类Node的实现
12
class Node
13
{
14
//属性
15
public:
16
string Data; //声名数据为字符串
17
Node * Next; //指向下一个节点
18
19
//方法及其实现
20
public:
21
Node(string data,Node * next) //构造函数1
22
{
23
this->Data=data;
24
this->Next=next;
25
}
26
27
Node() //构造函数2
28
{
29
this->Data="";
30
this->Next=null;
31
}
32
~Node() //析造函数
33
{
34
//cout<<"Node "<<Data<<"Disposed"<<endl;
35
}
36
Dispose() //自定义释放内存函数 ?????
37
{
38
this->Data="";
39
this->Next=null;
40
}
41
};
42
43
//Node.h2
//By Hafeyang 3
//该程序实现一个节点类4
// 5
//头文件部分6
#include <string>7
#include <iostream>8
#define null 09
using namespace std;10

11
//类Node的实现12
class Node13
{14
//属性15
public:16
string Data; //声名数据为字符串17
Node * Next; //指向下一个节点18

19
//方法及其实现20
public:21
Node(string data,Node * next) //构造函数122
{23
this->Data=data;24
this->Next=next;25
}26

27
Node() //构造函数228
{29
this->Data="";30
this->Next=null;31
} 32
~Node() //析造函数33
{34
//cout<<"Node "<<Data<<"Disposed"<<endl;35
}36
Dispose() //自定义释放内存函数 ?????37
{38
this->Data="";39
this->Next=null;40
}41
};42

43

1
//List .h
2
//By Hafeyang
3
//该类实现类链表
4
#include "Node.h"
5
class List
6
{
7
//属性
8
public:
9
Node * Head; //头节点指针
10
int Length; //List长度
11
12
//方法
13
List()
14
{
15
Length=0;
16
Head=null;
17
}
18
public:
19
int AppendNode(Node * newNode) //在链表的为部添加节点
20
{
21
try
22
{
23
if(Length==0) //长度为零添加第一个节点
24
{
25
Head=newNode;
26
Head->Next=null;
27
}
28
else //在链表尾部添加节点
29
{
30
Node * temp;
31
temp=Head;
32
while(temp->Next!=null)
33
{
34
temp=temp->Next;
35
}
36
temp->Next=newNode;
37
newNode->Next=null;
38
}
39
}
40
catch(
)
41
{
42
cout<<"Append Node "<<newNode->Data<<" Failed!"<<endl;
43
return 0; //返回0 插入失败
44
}
45
Length++;
46
cout<<"Append Node "<<newNode->Data<<" Seccessfully!"<<endl;
47
return 1; //返回1 插入成功
48
}
49
50
void PrintList() //输出所有节点数据
51
{
52
Node * temp=Head;
53
cout<<endl;
54
cout<<"********Print The List Start********"<<endl;
55
while(temp!=null)
56
{
57
cout<<"Node Data:"<<temp->Data<<endl;
58
temp=temp->Next;
59
}
60
cout<<"The Length of the List:"<<Length<<endl;
61
cout<<"********Print The List End**********"<<endl;
62
cout<<endl;
63
}
64
65
66
int DeleteNode(Node * deleteNode)
67
{
68
Node * temp=Head;
69
70
71
if(Head==deleteNode) //删除头节点
72
{
73
return deleteHead();
74
}
75
76
77
while(temp!=null)
78
{
79
if(temp->Next==deleteNode)
80
{
81
break; //找到deleteNode 的前一个节点
82
}
83
temp=temp->Next;
84
}
85
86
if(temp==null) //没有找到该节点
87
{
88
cout<<" Node"<<deleteNode->Data<<" does not exist!"<<endl;
89
return 0; //删除失败 返回0
90
}
91
//此时temp 为deleteNode 的前一个节点
92
temp->Next=deleteNode->Next;
93
94
95
cout<<"Delete Node "<<deleteNode->Data<<" Seccessfully!"<<endl;
96
97
deleteNode->~Node(); //调用析构函数 释放节点
98
Length--;
99
return 1;
100
}
101
102
int deleteHead()
103
{
104
try
105
{
106
Head=Head->Next;
107
cout<<"Delete Head Seccessfully!"<<endl;
108
Length--;
109
110
if(Head!=null)
111
{
112
Head->~Node(); //调用析构函数 释放节点
113
}
114
115
return 1;
116
}
117
catch(
)
118
{
119
cout<<"Delete Head Failed"<<endl;
120
return 0;
121
}
122
}
123
};
//List .h2
//By Hafeyang3
//该类实现类链表4
#include "Node.h"5
class List6
{7
//属性8
public:9
Node * Head; //头节点指针10
int Length; //List长度11

12
//方法13
List()14
{15
Length=0;16
Head=null;17
}18
public:19
int AppendNode(Node * newNode) //在链表的为部添加节点20
{21
try22
{23
if(Length==0) //长度为零添加第一个节点24
{25
Head=newNode;26
Head->Next=null;27
}28
else //在链表尾部添加节点29
{30
Node * temp;31
temp=Head;32
while(temp->Next!=null)33
{34
temp=temp->Next;35
}36
temp->Next=newNode;37
newNode->Next=null;38
}39
}40
catch(
)41
{42
cout<<"Append Node "<<newNode->Data<<" Failed!"<<endl;43
return 0; //返回0 插入失败44
}45
Length++;46
cout<<"Append Node "<<newNode->Data<<" Seccessfully!"<<endl;47
return 1; //返回1 插入成功48
}49

50
void PrintList() //输出所有节点数据51
{52
Node * temp=Head;53
cout<<endl;54
cout<<"********Print The List Start********"<<endl;55
while(temp!=null)56
{57
cout<<"Node Data:"<<temp->Data<<endl;58
temp=temp->Next;59
}60
cout<<"The Length of the List:"<<Length<<endl;61
cout<<"********Print The List End**********"<<endl;62
cout<<endl;63
}64

65

66
int DeleteNode(Node * deleteNode)67
{68
Node * temp=Head;69

70
71
if(Head==deleteNode) //删除头节点72
{73
return deleteHead();74
}75

76

77
while(temp!=null)78
{79
if(temp->Next==deleteNode)80
{81
break; //找到deleteNode 的前一个节点82
}83
temp=temp->Next;84
}85

86
if(temp==null) //没有找到该节点87
{88
cout<<" Node"<<deleteNode->Data<<" does not exist!"<<endl;89
return 0; //删除失败 返回090
}91
//此时temp 为deleteNode 的前一个节点92
temp->Next=deleteNode->Next;93

94
95
cout<<"Delete Node "<<deleteNode->Data<<" Seccessfully!"<<endl;96

97
deleteNode->~Node(); //调用析构函数 释放节点98
Length--;99
return 1;100
}101

102
int deleteHead()103
{104
try105
{106
Head=Head->Next;107
cout<<"Delete Head Seccessfully!"<<endl;108
Length--;109

110
if(Head!=null)111
{112
Head->~Node(); //调用析构函数 释放节点113
}114

115
return 1;116
}117
catch(
)118
{119
cout<<"Delete Head Failed"<<endl;120
return 0;121
}122
}123
}; 1
2
#include "List.h"
3
void main()
4
{
5
Node newNode1=Node("NodeData1",null);//声名 节点
6
Node newNode2=Node("NodeData2",null);
7
Node newNode3=Node("NodeData3",null);
8
List newList=List(); //声明 链表
9
10
newList.AppendNode(&newNode1);
11
newList.AppendNode(&newNode2);
12
newList.AppendNode(&newNode3);
13
newList.PrintList();
14
15
newList.DeleteNode(&newNode3);
16
newList.PrintList();
17
18
19
newList.DeleteNode(&newNode2);
20
newList.PrintList();
21
22
newList.DeleteNode(&newNode1);
23
newList.PrintList();
24
char a;
25
cin>>a;
26
}

2
#include "List.h"3
void main()4
{5
Node newNode1=Node("NodeData1",null);//声名 节点6
Node newNode2=Node("NodeData2",null);7
Node newNode3=Node("NodeData3",null);8
List newList=List(); //声明 链表9

10
newList.AppendNode(&newNode1);11
newList.AppendNode(&newNode2);12
newList.AppendNode(&newNode3);13
newList.PrintList();14

15
newList.DeleteNode(&newNode3);16
newList.PrintList();17

18

19
newList.DeleteNode(&newNode2);20
newList.PrintList();21

22
newList.DeleteNode(&newNode1);23
newList.PrintList();24
char a;25
cin>>a;26
}


浙公网安备 33010602011771号