zoukankan      html  css  js  c++  java
  • C#数据结构顺序表操作

            很多朋友都在为C#数据结构这个问题烦恼,市场上没有关于C#数据结构的书籍和资料基本没有,网上的资料也凌乱,在这里我将发布一些数据结构的基本操作代码,代码采用C#实现数据结构的算法,希望我的文章及代码可以帮助到大家学习使用C#来实现数据结构的各种算法。由于工作和别的原因,代码写得很不规范,但我自己把下面的方法块都测试了下没发现错误。

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

    线性表的定义:

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

      中的元素性质必须相同)。

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

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

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

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

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

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

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

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

    线性表的运算:

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

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

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

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

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

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

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

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

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

    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace classfile
    {
        class sxb
        {
            public const int defaultsize = 100;  /*定义顺序表的默认元素数目为1000*/
            public int maxsize;
            public int size;
            public int[] list;
            //定义x,y的变量
            public int _x;
            public int _y;
            //定义x,y的属性
            //public int x
            //{
            //    get { return _x; }
            //    set { return _x = value;}
            //}
            //public int y
            //{
            //    get { return _y; }
            //    set { return _y = value; }
            //}
            public sxb()
            {
                initiatelist (defaultsize );

            }
            public sxb(int size)
            {
                initiatelist (size );
            }
            //初始化顺序表
            public void initiatelist(int sz)
            {
                maxsize = sz;
                size = 0 ;
                list = new int[sz];
            }
                
            //顺序表插入算法,无返回值
            public void insertsxb(int i, int x)
            {
                if (size == maxsize)
                {
                    throw new Exception("顺序表已满,无法插入!");
                }
                if (i < 0 || i > size)
                {
                    throw new Exception("参数错误!");
                }
                for (int j = 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间元素的方法
            public int DeleteXY(int x,int y)
            {
                for (int i = _x; i < _y; i++)
                {
     
                }
                return 0;
            }

            //顺序表删除算法,返回删除的元素
            public int delete(int i)
            {
                //size是线行表的长度大小
                if (size == 0)
                {
                    throw new Exception("顺序表已为空无法删除!");
                }
                if (i < 0 || i > size - 1)
                {
                    throw new Exception("参数错误!");
                }
                int it = list[i];
                for (int j = i; j < size - 1; j++)
                {
                    list[j] = list[j + 1];

                }
                size--;
                return it;
            }
            //获取顺序表的元素i,返加元素i的值
            public int getdata(int i)
            {
                if (i < 0 || i >= size)
                {
                    throw new Exception("参数错误!");
                }
                return list[i];
            }
            //获取顺序表的长度
            public int sizelist()
            {
                return size;
            }
            //判断顺序表是否为空,为空返回true,否则返回false
            public bool isempty()
            {
                return size == 0;
            }

            //请问:该函数的功能 ???
            public int moredatadelete(sxb l, int x)
            {
                int i;
                int tag = 0;
                for (i = 0; i < l.size; i++)
                {
                    if (x.Equals(l.getdata(i)))
                    {
                        l.delete( i );
                        i--;  
                        tag = 1;
                    }
                }
                return tag;
            }
        }
    }


    我刚刚申请了这个Blog,亲爱的朋友们,欢迎你门多多的访问我的空间。
    http://www.cnblogs.com/beniao              

  • 相关阅读:
    WEB项目运行时,多次遇到 The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone问题解决办法
    如何区分研究背景与研究意义
    xml学习笔记
    visio2013/2016软件及激活码总汇
    Spyder 常用快捷键总汇
    java.sql.SQLNonTransientConnectionException: Cannot load connection class because of underlying exception:
    Myeclipse 与 MysqlSQL数据库连接报错-The Server time zone value 'XXXXX' 乱码 is unrecognized...
    一个数除以9余8除以8余7除以7余6
    js关于饮料瓶换饮料的算法
    cocos creator集成小游戏去掉背景
  • 原文地址:https://www.cnblogs.com/beniao/p/843908.html
Copyright © 2011-2022 走看看