由于工作和别的原因,代码写得很不规范,但我自己把下面的方法块都测试了下没发现错误。
如果你在学习中发现我的方法有什么错误请留下你宝贵的意见。
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#数据结构线性表中最常见的是顺序表,我写了一个关于顺序表的基本操作的类,代码我贴在下面:
- usingSystem;
- usingSystem.Collections.Generic;
- usingSystem.Text;
- namespaceclassfile
- {
- classsxb
- {
- publicconstintdefaultsize=100;/*定义顺序表的默认元素数目为1000*/
- publicintmaxsize;
- publicintsize;
- publicint[]list;
- //定义x,y的变量
- publicint_x;
- publicint_y;
- //定义x,y的属性
- //publicintx
- //{
- //get{return_x;}
- //set{return_x=value;}
- //}
- //publicinty
- //{
- //get{return_y;}
- //set{return_y=value;}
- //}
- publicsxb()
- {
- initiatelist(defaultsize);
- }
- publicsxb(intsize)
- {
- initiatelist(size);
- }
- //初始化顺序表
- publicvoidinitiatelist(intsz)
- {
- maxsize=sz;
- size=0;
- list=newint[sz];
- }
- //顺序表插入算法,无返回值
- publicvoidinsertsxb(inti,intx)
- {
- if(size==maxsize)
- {
- thrownewException("顺序表已满,无法插入!");
- }
- if(i<0||i>size)
- {
- thrownewException("参数错误!");
- }
- for(intj=size-1;j>=i-1;j--)
- {
- list[j+1]=list[j];//改成list[j]=list[j-1]
- }
- list[i-1]=x;
- //size是线行表的长度大小数据插入长度要+1
- size++;
- }
- //定义删除顺序表中x--y间元素的方法
- publicintDeleteXY(intx,inty)
- {
- for(inti=_x;i<_y;i++)
- {
- }
- return0;
- }
- //顺序表删除算法,返回删除的元素
- publicintdelete(inti)
- {
- //size是线行表的长度大小
- if(size==0)
- {
- thrownewException("顺序表已为空无法删除!");
- }
- if(i<0||i>size-1)
- {
- thrownewException("参数错误!");
- }
- intit=list[i];
- for(intj=i;j<size-1;j++)
- {
- list[j]=list[j+1];
- }
- size--;
- returnit;
- }
- //获取顺序表的元素i,返加元素i的值
- publicintgetdata(inti)
- {
- if(i<0||i>=size)
- {
- thrownewException("参数错误!");
- }
- returnlist[i];
- }
- //获取顺序表的长度
- publicintsizelist()
- {
- returnsize;
- }
- //判断顺序表是否为空,为空返回true,否则返回false
- publicboolisempty()
- {
- returnsize==0;
- }
- //请问:该函数的功能???
- publicintmoredatadelete(sxbl,intx)
- {
- inti;
- inttag=0;
- for(i=0;i<l.size;i++)
- {
- if(x.Equals(l.getdata(i)))
- {
- l.delete(i);
- i--;
- tag=1;
- }
- }
- returntag;
- }
- }
- }
【编辑推荐】