zoukankan      html  css  js  c++  java
  • [数据结构]C#基于数组实现泛型顺序表

    前方预警,只完成了顺序表的插入/删除/查找。

    错误代码示例:

     1         /// <summary>
     2         /// 查找顺序表第i个位置的元素
     3         /// 在显示情况中,我们更常用下标
     4         /// </summary>
     5         /// <param name="i"></param>
     6         /// <returns></returns>
     7         public T GetElemByIndex(int i)
     8         {
     9             //T temp = ;
    10             if (data.Length == 0)
    11             {
    12                 //throw new IndexOutOfRangeException("索引超出顺序表范围");
    13                 throw new NullReferenceException("顺序表为空");
    14             }
    15             else if (i < 1 || i > Length + 1)
    16             {
    17                 throw new IndexOutOfRangeException("索引超出顺序表范围");
    18             }
    19             else
    20             {
    21                 return data[i-1];
    22             }
    23         }
    查找制定位置的元素

     注意在代码中,返回值没有按照数据结构课本的方式,返回Status,因为用户调用方法,就是要获取返回值的,用ref的方式反而不好使用,感觉怪怪的。

     另外,在非法调用时,也不是通过cw的方式提醒用户出错,而是采用直接抛出异常的方式,数组是否越界这些判断理应放权给用户。

     还有,从代表中,我们发现,不返回值,而是抛出异常,编译任然会通过。

    正确代码示例:

    if (Length == 0)
    {
          throw new NullReferenceException("顺序表为空");
    }    
    

    判断顺序表是否为空时,不能用data.Length属性,因为该属性值不是顺序表的大小,而是数组的大小,永远为MaxSize;而Length表示线性表的长度;

     1 //插入
     2 for (int j = Length - 1; j >= i - 1; j--)
     3 {
     4         data[j + 1] = data[j];
     5 }
     6             
     7 
     8 //删除
     9 for (int j = i; j < Length; j++)
    10 {
    11                 data[j - 1] = data[j];
    12  }

    注意思维模式的改变,之前无论是删除元素,还是修改元素,都和数据结构课本中的思路不一致,事实证明,课本中的思路是清晰的。需要处理那些元素,注意是数组中的那些元素,那么j就初始化为要处理的第一个元素下标,然后判断边界条件。

  • 相关阅读:
    CentOS下安装中文man 手册
    CentOS 6.5系统安装配置图解教程
    a链接点击下载图片到本地(php)
    PHP 常用的header头部定义汇总
    thinkphp3.2接入支付宝支付接口(PC端)
    thinkphp3.2.3多图上传并且生成多张缩略图
    利用<meta http-equiv="refresh" content="0;URL=?id='.$id.'" />一条一条的更新数据
    【C/C++】C语言内存模型 (C memory layout)
    【软件工程】关于编程思想、学习方法
    【Python】opencv-python入门
  • 原文地址:https://www.cnblogs.com/SharpL/p/4451683.html
Copyright © 2011-2022 走看看