分享
 
 
 

Snake.Net中的线性表

王朝c#·作者佚名  2006-01-31
窄屏简体版  字體: |||超大  

线性表(Linear List)是由n(n≥0)个数据元素(结点)a[0],a[1],a[2]…,a[n-1]组成的有限序列。.Net Framework的System.Collection命名空间内并没有提供对线性表的太多支持,只提供了ArrayList类似与顺序表。Snake.Net提供三种形式的线性表,顺序表,单向链表和双向链表分别对应类Eastasp.Framework.Collections.OrderedTable、Eastasp.Framework.Collections.SingleLink和Eastasp.Framework.Collections.DoubleLink。 先来了解一下三种表的概念:

顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。 单向链表是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始。 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。 下面的代码中了解一下Snake.Net中的线性表

1

namespace Eastasp.Framework.Collections

2

{

3

namespace#region namespace

4

using System;

5

using System.Collections;

6

using Collections;

7

using Diagnostics;

8

using Utility;

9

using NUnit.Framework;

10

#endregion

11

12

class for CollectionTest#region class for CollectionTest

13

/**//// <summary>

14

/// Summary description for CollectionTest.

15

/// </summary>

16

[TestFixture]

17

public class CollectionTest:ITest

18

{

19

public CollectionTest()

20

{

21

}

22

23

[Test]

24

public void Test()

25

{

26

OutputLinks();

27

}

28

29

PRivate void OutputLinks()

30

{

31

//declare

32

ILink[] links;

33

34

//output start infomation

35

Console.Write("------- Starttest Links -------{0}{0}{0}", StringUtil.CrLf);

36

37

links = new ILink[]
{

38

new OrderedTable(),

39

new SingleLink(),

40

new DoubleLink()};

41

42

for(int i = 0; i < links.Length; i++)
{

43

Console.Write("Start Test {0} {1}", links[i].GetType().FullName, StringUtil.CrLf);

44

OutputLink(links[i]);

45

Console.Write("Test Completed{1}{1}", links[i].GetType().FullName, StringUtil.CrLf);

46

}

47

48

//output end infomation

49

Console.Write("{0}{0}------- End test Links -------{0}{0}", StringUtil.CrLf);

50

}

51

52

53

private void OutputLink(ILink link)

54

{

55

//declare

56

object[] array;

57

DateTime start;

58

DateTime end;

59

TimeSpan passed;

60

61

start = DateTime.Now;

62

Console.Write(String.Format("Start date time:{0}{1}", start.ToString("MM/dd/yyyy HH:mm:ss"), StringUtil.CrLf));

63

64

for(int i = 0; i < 10000; i++)
{

65

66

link.Clear();

67

68

//initialize

69

array = new object[]
{"aaa", "bbb", "ccc", "ddd", "eee", "hhh", "fff", "ggg", "bb2", "cc2", "dd2", "ee2", "hh2", "ff2", "gg2", "iii", "jjj", "kkk"};

70

link.AddRange(array);

71

Assert.AreEqual(link.Count, array.Length, "Error!");

72

73

link.Add("000");

74

Assert.AreEqual(link.Count, array.Length + 1, "Error!");

75

76

link.Remove("ddd");

77

Assert.AreEqual(link.Count, array.Length, "Error!");

78

79

link.Insert(3, "222");

80

Assert.AreEqual(link.Count, array.Length + 1, "Error!");

81

82

link.RemoveAt(2);

83

Assert.AreEqual(link.Count, array.Length, "Error!");

84

}

85

86

end = DateTime.Now;

87

passed = new TimeSpan(end.Ticks - start.Ticks);

88

Console.Write(String.Format("End date time:{0}{1}", end.ToString("MM/dd/yyyy HH:mm:ss"), StringUtil.CrLf));

89

Console.Write(string.Format("spend {0} seconds, {1} milliseconds {2}", passed.Seconds, passed.Milliseconds, StringUtil.CrLf));

90

}

91

}

92

#endregion

93

}

运行结果如下:

------- Starttest Links -------

Start Test Eastasp.Framework.Collections.OrderedTable

Start date time:07-21-2005 09:58:16

End date time:07-21-2005 09:58:16

spend 0 seconds, 812 milliseconds

Test CompletedStart Test Eastasp.Framework.Collections.SingleLink

Start date time:07-21-2005 09:58:16

End date time:07-21-2005 09:58:17

spend 0 seconds, 765 milliseconds

Test CompletedStart Test Eastasp.Framework.Collections.DoubleLink

Start date time:07-21-2005 09:58:17

End date time:07-21-2005 09:58:18

spend 0 seconds, 765 milliseconds

Test Completed------- End test Links -------

1

namespace Eastasp.Framework.Collections

2

{

3

namespace#region namespace

4

using System;

5

using System.Collections;

6

using Collections;

7

using Diagnostics;

8

using Utility;

9

using NUnit.Framework;

10

#endregion

11

12

class for CollectionTest#region class for CollectionTest

13

/**//// <summary>

14

/// Summary description for CollectionTest.

15

/// </summary>

16

[TestFixture]

17

public class CollectionTest:ITest

18

{

19

public CollectionTest()

20

{

21

}

22

23

[Test]

24

public void Test()

25

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有