C#数据结构之顺序表操作

开发 后端
很多朋友都在为C#数据结构这个问题烦恼,市场上没有关于C#数据结构的书籍和资料基本没有,网上的资料也凌乱,在这里我将发布一些数据结构的基本操作代码,代码采用C#实现数据结构的算法,希望我的文章及代码可以帮助到大家学习使用C#来实现数据结构的各种算法。

由于工作和别的原因,代码写得很不规范,但我自己把下面的方法块都测试了下没发现错误。

如果你在学习中发现我的方法有什么错误请留下你宝贵的意见。

C#数据结构线性表的定义:

n个数据元素的有限序列(线性表的数据元素在不同的环境下具体含义可以不同,但在同一线性表中的元素性质必须相同)。

表长:线性表中数据元素的个数n(n>=0)。

空表:n=0时的线性表称为空表。

位序:非空表中数据元素ai是此表的第i个元素,则称i为ai在线性表中的位序。

线性表的结构特点:在数据元素的非空有限集中有如下规则

1.存在唯一的一个被称作“第一个”的数据元素

2.存在唯一的一个被称作“最后一个”的数据元素

3.除第一个外,集合中的每个数据元素均只有一个前驱

4.除最后一个外,集合中的每个数据元素均只有一个后继

C#数据结构线性表的运算

1.取元素:求线性表中指定数据元素的位序。

2.插入:在线性表两个确定的元素之间插入一个新的数据元素。

3.删除:删除表中某个数据元素。

4.求表长:求线性表中数据元素的个数。

5.查找:查找表中满足某种条件的数据元素。

6.合并:把两个线性表合并成一个线性表。

7.分拆:把一个线性表分拆成多个线性表。

8.排序:按一个或多个数据项值的递增或递减次序重新排列表中数据元素。

在C#数据结构线性表中最常见的是顺序表,我写了一个关于顺序表的基本操作的类,代码我贴在下面:

  1. usingSystem;
  2. usingSystem.Collections.Generic;
  3. usingSystem.Text;
  4. namespaceclassfile
  5. {
  6. classsxb
  7. {
  8. publicconstintdefaultsize=100;/*定义顺序表的默认元素数目为1000*/
  9. publicintmaxsize;
  10. publicintsize;
  11. publicint[]list;
  12. //定义x,y的变量
  13. publicint_x;
  14. publicint_y;
  15. //定义x,y的属性
  16. //publicintx
  17. //{
  18. //get{return_x;}
  19. //set{return_x=value;}
  20. //}
  21. //publicinty
  22. //{
  23. //get{return_y;}
  24. //set{return_y=value;}
  25. //}
  26. publicsxb()
  27. {
  28. initiatelist(defaultsize);
  29. }
  30. publicsxb(intsize)
  31. {
  32. initiatelist(size);
  33. }
  34. //初始化顺序表
  35. publicvoidinitiatelist(intsz)
  36. {
  37. maxsize=sz;
  38. size=0;
  39. list=newint[sz];
  40. }
  41. //顺序表插入算法,无返回值
  42. publicvoidinsertsxb(inti,intx)
  43. {
  44. if(size==maxsize)
  45. {
  46. thrownewException("顺序表已满,无法插入!");
  47. }
  48. if(i<0||i>size)
  49. {
  50. thrownewException("参数错误!");
  51. }
  52. for(intj=size-1;j>=i-1;j--)
  53. {
  54. list[j+1]=list[j];//改成list[j]=list[j-1]
  55. }
  56. list[i-1]=x;
  57. //size是线行表的长度大小数据插入长度要+1
  58. size++;
  59. }
  60. //定义删除顺序表中x--y间元素的方法
  61. publicintDeleteXY(intx,inty)
  62. {
  63. for(inti=_x;i<_y;i++)
  64. {
  65. }
  66. return0;
  67. }
  68. //顺序表删除算法,返回删除的元素
  69. publicintdelete(inti)
  70. {
  71. //size是线行表的长度大小
  72. if(size==0)
  73. {
  74. thrownewException("顺序表已为空无法删除!");
  75. }
  76. if(i<0||i>size-1)
  77. {
  78. thrownewException("参数错误!");
  79. }
  80. intit=list[i];
  81. for(intj=i;j<size-1;j++)
  82. {
  83. list[j]=list[j+1];
  84. }
  85. size--;
  86. returnit;
  87. }
  88. //获取顺序表的元素i,返加元素i的值
  89. publicintgetdata(inti)
  90. {
  91. if(i<0||i>=size)
  92. {
  93. thrownewException("参数错误!");
  94. }
  95. returnlist[i];
  96. }
  97. //获取顺序表的长度
  98. publicintsizelist()
  99. {
  100. returnsize;
  101. }
  102. //判断顺序表是否为空,为空返回true,否则返回false
  103. publicboolisempty()
  104. {
  105. returnsize==0;
  106. }
  107. //请问:该函数的功能???
  108. publicintmoredatadelete(sxbl,intx)
  109. {
  110. inti;
  111. inttag=0;
  112. for(i=0;i<l.size;i++)
  113. {
  114. if(x.Equals(l.getdata(i)))
  115. {
  116. l.delete(i);
  117. i--;
  118. tag=1;
  119. }
  120. }
  121. returntag;
  122. }
  123. }
  124. }

【编辑推荐】

  1. 定义C#接口学习经验
  2. C# ListBox学习笔记
  3. 操作C# Dataset介绍
  4. C# ODBC访问MySQL数据库
  5. 浅析C#和Java不同点
责任编辑:彭凡 来源: 博客园
相关推荐

2009-08-11 14:30:32

C#数据结构与算法

2021-07-11 12:06:43

python数据结构

2018-06-06 08:54:23

数据结构存储

2009-08-11 14:14:42

C#数据结构与算法

2009-08-11 14:51:11

C#数据结构与算法

2009-08-11 14:43:42

C#数据结构与算法

2009-08-11 14:36:17

C#数据结构与算法线性表

2009-06-24 09:52:21

哈希表

2009-08-03 17:38:12

排序算法C#数据结构

2009-08-19 15:47:09

C#操作Access

2009-08-19 13:25:53

C#操作注册表

2009-08-19 13:34:55

C#操作注册表

2009-08-19 13:30:58

C#操作注册表

2012-02-02 10:21:05

单链表nexthead

2009-08-19 13:38:06

C#操作注册表

2009-08-17 08:33:00

Visual C#数据

2011-04-11 17:09:37

稀疏矩阵矩阵C++

2009-08-13 18:34:49

C#数据结构和算法

2021-07-16 07:57:34

Python数据结构

2009-08-19 16:40:26

C#操作Access数
点赞
收藏

51CTO技术栈公众号