中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > .NET > 临时文章
Snake.Net中的线性表
作者:未知 时间:2005-07-27 21:53 出处:CSDN 责编:chinaitpower
              摘要:Snake.Net中的线性表

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

 

先来了解一下三种表的概念:

顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。

 单向链表是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始。

 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。

 下面的代码中了解一下Snake.Net中的线性表



 1namespace Eastasp.Framework.Collections
 2{
 3    #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    #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 Completed

Start 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 Completed

Start 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 -------



 1namespace Eastasp.Framework.Collections
 2{
 3    #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    #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 Completed

Start 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 Completed

Start 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 -------



运行结果如下:
 ------- 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 Completed

Start 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 Completed

Start 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 -------


关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有