0x01 C#数据结构/线性表/顺序表.cs

标签: C#  数据结构  c#  

0x01 C#数据结构/线性表/顺序表.cs

一、启动VS Studio并新建一个控制台应用程序

二、创建一个名为SeqList.cs的类

三、创建一个泛型类<T>

namespace Demo01
{
    class SeqList<T>
    {
        public enum State//函数返回值状态
        {
            OK = 1,
            ERROR = 0
        };
        T[] Arr;//元素数组
        public int Length { get; private set; }//当前长度
        public int Maxsize { get; private set; }//最大容量

        public SeqList()//构造函数
        {
            Arr = new T[20];
            Maxsize = 20;
            Length = 0;
        }
        public SeqList(int size)//带有长度参数的构造函数
        {
            Arr = new T[size];
            Maxsize = size;
            Length = 0;
        }
        public bool IsFull()//检测顺序表满不满
        {
            return Length == Maxsize;
        }
        public State AddItem(T item)//在尾部增加数据
        {
            if (this.IsFull())
            {
                Expansion();
            }
            Arr[Length] = item;
            Length++;
            return State.OK;
        }
        public State InsertItem(T item, int index)//在指定索引处插入数据
        {
            if (this.IsFull() || index > Length + 1) return State.ERROR;
            for (int i = Length; i > index; i--)
            {
                Arr[i] = Arr[i - 1];
            }
            Arr[index] = item;
            Length++;
            return State.OK;
        }
        public State GetItem(int index)//获取指定索引处的元素
        {
            if (index < 0 || index >= Length) return State.ERROR;
            System.Console.WriteLine(Arr[index].ToString());
            return State.OK;
        }
        public State DelItem(int index)//删除指定索引处的元素
        {
            if (index < 0 || index >= Length) return State.ERROR;
            for (int i = index; i < Length - 1; i++)
            {
                Arr[i] = Arr[i + 1];
            }
            Length--;
            return State.OK;
        }
        public State ClearItem()//清空该顺序表
        {
            Length = 0;
            return State.OK;
        }
        public void Expansion()//扩展该顺序表容量
        {
            T[] newArr = new T[Maxsize * 2];
            Arr.CopyTo(newArr, 0);
            Arr = newArr;
            Maxsize *= 2;
        }
    }
}

亖、编写测试主函数

using System;

namespace Demo01
{
    class Program
    {
        static void Main(string[] args)
        {
            SeqList<int> seqList = new SeqList<int>();
            for (int i = 0; i < 50; i++)
            {
                seqList.AddItem(i);
            }
            Console.WriteLine("增加50个数据元素");
            seqList.InsertItem(10, 0);
            Console.WriteLine("在索引为0处插入元素10");
            for (int i = 0; i < seqList.Length; i++)
            {
                SeqList<int>.State state = seqList.GetItem(i);
                if (state == SeqList<int>.State.OK) Console.WriteLine("成功");
            }
            Console.WriteLine("打印顺序表");
            seqList.DelItem(0);
            Console.WriteLine("删除索引为0的元素");
            for (int i = 0; i < seqList.Length; i++)
            {
                seqList.GetItem(i);
            }
            Console.WriteLine("打印顺序表");
            seqList.ClearItem();
            Console.WriteLine("清空顺序表");
            for (int i = 0; i < seqList.Length; i++)
            {
                seqList.GetItem(i);
            }
            Console.WriteLine("打印顺序表");
        }
    }
}

五、聪明的你一定看懂了吧

想来想去大概也不会有人用C#学习数据结构吧,别骂了别骂了写着玩的

我想大家看标题大概也会懂的吧,这个系列会有后续的!

笔者才疏学浅,如有纰漏,还望指正!

版权声明:本文为qq_45746318原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_45746318/article/details/108584515

智能推荐

ActiveMQ学习4-ActiveMQ的安全机制和集群模式

ActiveMQ的安全机制和集群模式 20 ActiveMQ安全机制 20.1 Web 控制台安全 20.2 消息服务器Broker安全 21 ActiveMQ主从集群 21.1 使用集群的重要性 20.2 主从集群的方式 20.2.1 shared filesystem Master-Slave方式主从集群 20.2.2 shared database Master-Slave方式主从集群 20...

说说 Python Django 应用的基础目录结构

通过以下 django-admin 指令创建应用之后,就会生成应用的基础目录结构。 比如,我们建立了一个叫 ‘first’ 的应用,它的目录结构是这样的: 目录或文件 说明 最外层的 first/ 这是新应用的根目录,所有与该应用相关的内容都放在这里。 manage.py 用于管理 Django 项目的命令行工具。 里面一层的 first/ 目录 是一个...

Springboot整合rabbitMQ

依赖: 配置文件application.yml RabbitConfig 消息生产者RabbitProducer 消息消费者RabbitCustomer 通过Controller进行调用 启动项目后调用接口: 结果:...

Thread.join()方法的使用

如果一个线程A执行了thread.join()语句,代表当前线程A等待thread线程终止后才从thread.join()方法返回 并且这个方法具有超时特性,可以添加参数设置 输出结果: jdk中Thread.join()方法的源码(进行了部门调整)   每个线程终止的条件是前驱线程的终止,每个线程等待前驱线程终止后,才从join()方法返回,  当线程终止时,会调用自身的no...

linux服务器部署jenkins笔记

安装jenkins参考文档:https://blog.csdn.net/tomatocc/article/details/83930714 1. 打开jenkins官网:https://jenkins.io/download/ 将war包下载到本地 **ps:**这里要注意的是要下载左边下方的war包,不要下载右边下面的war包。左边是稳定版本,右边是最新版本,建议大家使用稳定版本(我刚开始下载的...

猜你喜欢

k8s部署elasticsearch集群

百度营销大学     环境准备 我们使用的k8s和ceph环境见: https://blog.51cto.com/leejia/2495558 https://blog.51cto.com/leejia/2499684 ECK简介 Elastic Cloud on Kubernetes,这是一款基于 Kubernetes Operator 模式的新型编排产品,用户可使用该产品在...

saas-export项目-AdminLTE介绍与入门

AdminLTE介绍 (1)AdminLTE是什么? AdminLTE是一款建立在bootstrap和jquery之上的开源的模板主题工具 (2)AdminLTE有什么特点? 提供一系列响应的、可重复使用的组件, 并内置了多个模板页面 自适应多种屏幕分辨率,兼容PC和移动端 快速的创建一个响应式的Html5网站 AdminLTE 不但美观, 而且可以免去写很大CSS与JS的工作量 AdminLTE...

MyBatis中ResultMap结果集映射

用于解决属性名和字段名不一致的情况: resultMap 元素是 MyBatis 中最重要最强大的元素。...

编写一个shell

编写shell的过程: 1.从标准输入中读入一个字符串。 2.解析字符串 3.创建一个子进程的执行程序。 4.子进程程序替换。 5.父进程等待子进程退出。...

WEB自动化测试中Xpath定位方法

前言: Xpath是在XML文档中查找信息的一种语言,使用路径表达式来选取XML文档中的节点或节点集,由于XML与HTML结构类似(前者用于传输数据,后者用于显示数据),所以Xpath也常用于查找HTML文档中的节点或节点集。 一  路径表达式: 路径以“/”开始     表示找到满足该绝对路径的元素; 路径以//”开始  ...