线性表链式表示的C#实现(参考数据结构(C语言版))
1
using System;2
using System.Collections.Generic;3
using System.Text;4

5
namespace CA_HomeWork_16


{7
enum returnValue8

{9
TRUE = 1,10
FALSE = 0,11
OK = 1,12
ERROR = 0,13
INFEASIBLE = -1,14
OVERFLOW = -215
}16

17
public class LinkList18

{19
public LinkList Next;20
public int data;21
}22

23
public class List24

{25
static void Main(string[] args)26

{27
LinkList La = new LinkList();28
LinkList Lb = new LinkList();29
LinkList Lc = new LinkList();30
Initlist(ref La);31
ShowList(La);32
Initlist(ref Lb);33
ShowList(Lb);34
Initlist(ref Lc);35
MergeList(La, Lb, ref Lc);36
ShowList(Lc);37
return;38
}39

40
private static returnValue Initlist(ref LinkList L)41

{42
int i, n;43
LinkList p, s;44
Console.Write("pleast input the list's Elem Number:");45
n = Convert.ToInt32(Console.ReadLine());46
L.Next = null;47
p = L;48
for (i = 1; i <= n; i++)49

{50
s = new LinkList();51
s.Next = null;52
Console.Write("please input {0} Elem:", i);53
s.data = int.Parse(Console.ReadLine());54
p.Next = s;55
p = s;56
}57
return (returnValue.OK);58
}59

60
private static int ListLength(LinkList L)61

{62
int i = 0;63
LinkList p;64
p = L;65
while (p.Next != null)66

{67
p = p.Next;68
i++;69
}70
return (i);71
}72

73
private static returnValue GetElem(LinkList L, int i, out int e)74

{75
LinkList p;76
int j = 1;77
e = 0;78
p = L.Next;79
while ((p != null) && (j < i))80

{81
p = p.Next;82
j++;83
}84
if ((p == null) || (j > i)) return (returnValue.ERROR);85
e = p.data;86
return (returnValue.OK);87
}88

89
private static returnValue ListInsert(ref LinkList L, int i, int e)90

{91
LinkList p, s;92
int j = 0;93
p = L;94
j = 0;95
while ((p != null) && (j < i - 1))96

{97
p = p.Next;98
j++;99
}100
if ((p == null) || (j > i - 1)) return (returnValue.ERROR);101
s = new LinkList();102
s.data = e;103
s.Next = p.Next;104
p.Next = s;105
return (returnValue.OK);106
}107

108
private static void ShowList(LinkList L)109

{110
LinkList p;111
p = L.Next;112
Console.Write("This list is: ");113
while (p != null)114

{115
Console.Write("{0} ", p.data);116
p = p.Next;117
}118
Console.Write("\n");119
return;120
}121

122
private static void MergeList(LinkList La, LinkList Lb, ref LinkList Lc)123

{124
int i, j, k, La_len, Lb_len;125
int ai, bj;126
i = 1;127
j = 1;128
k = 0;129
La_len = ListLength(La);130
Lb_len = ListLength(Lb);131
while ((i <= La_len) && (j <= Lb_len))132

{133
GetElem(La, i, out ai);134
GetElem(Lb, j, out bj);135
if (ai <= bj)136

{137
ListInsert(ref Lc, ++k, ai);138
++i;139
}140
else141

{142
ListInsert(ref Lc, ++k, bj);143
++j;144
}145
}146
while (i <= La_len)147

{148
GetElem(La, i++, out ai);149
ListInsert(ref Lc, ++k, ai);150
}151
while (j <= Lb_len)152

{153
GetElem(Lb, j++, out bj);154
ListInsert(ref Lc, ++k, bj);155
}156
return;157
}158

159
//建立单链表(头插法)160
//注:生成的链表中结点的次序和输入的顺序相反161
private void CreateList(ref LinkList L, int n)162

{163
L.Next = NULL;164
for (i = n; i > 0; --i)165

{166
LinkList p = new LinkList();167
p.data = int.Parse(Console.ReadLine());168
p.Next = L.Next;169
L.Next = p;170
}171
return;172
}173
}174
}有许多不足之处,希望见者指评,谢谢!

浙公网安备 33010602011771号