理论基础:
链表是用一组任意的存储单元来存储线性表中的数据元素。
如果结点的引用域只存储该结点直接后继结点的存储地址,则该链表叫单链表(Singly Linked List)。
单链表由头引用H唯一确定。头引用指向单链表的第一个结点,也就是把单链表第一个结点的地址放在H中。
C#实现:
1接口
引用线性表的接口IListDS<T>
2实现
首先,必须定义一个单链表的节点类。


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



32

33



34

35

36

37



38

39

40

41

42

43

实现主体类
Append,Insert,InsertBack三个方法实质上都是插入操作,可以考虑用overload或者override来实现,有兴趣的朋友试试。


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

32

33

34

35

36


37

38

39

40



41

42

43

44


45

46

47

48

49



50

51



52

53

54

55



56

57

58

59

60


61

62

63

64

65



66

67

68

69

70



71

72

73

74

75

76



77

78

79

80

81

82

83


84

85

86

87

88

89



90

91



92

93

94

95

96



97

98

99

100

101

102

103

104



105

106

107

108

109

110

111


112

113

114

115

116

117



118

119

120

121

122



123

124

125

126

127

128

129


130

131

132

133

134

135



136

137

138

139



140

141

142

143

144

145


146

147

148

149

150

151



152

153

154

155



156

157

158

159

160

161



162

163

164

165

166

167


168

169

170

171

172

173



174

175

176

177



178

179

180

181



182

183

184

185

186

187


188

189

190

191

192

193



194

195



196

197

198

199

200

201

202

203



204

205

206

207

208

209

碰到的问题:1 方法参数为int类型,改用object类型碰到一些问题,查找节点的时候,遍历整个链表,如何对比参数节点
对比参数会不会影响算法的时间复杂度
2 append,insert,insertback方法本质上都是插入操作,有没有更好的方法实现
代码没有经过测试,有兴趣的朋友可以试试,有问题,告知一下!