写一个MyList
首先定义接口
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _001_线性表 { interface IListDs<T> { int GetLenght(); void Clear(); bool isEmpty(); void Add(T item); void Insert(T item, int index); T Delete(int index); T this[int index] { get; } T GetEle ( int index); int Locate ( T value ); } }
实现接口
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _001_线性表 { /// <summary> /// 顺序表实现方式 /// </summary> /// <typeparam name="T"></typeparam> class SeqList<T> : IListDs<T> { private T[] data; //存储数据 private int count;//表示存了多少个数据 public SeqList(int size)//创建数据 { data = new T[size]; count = ; } ){}//默认 public T this[int index] { get { return GetEle(index); } } /// <summary> /// 添加元素 /// </summary> /// <param name="item"></param> public void Add(T item) { if (count == data.Length) { Console.WriteLine("饱满了"); } else { data[count] = item; count++; } } /// <summary> /// 清空 /// </summary> public void Clear() { count = ; } /// <summary> /// 删除 /// </summary> /// <param name="index"></param> /// <returns></returns> public T Delete(int index) { T temp = data[index]; && index <= count - ) { ; i < count; i++) { data[i - ] = data[i];//把数据向前移动 } count--; return temp; } else { return default(T); Console.WriteLine("不存在索引"); } } /// <summary> /// 获取元素 /// </summary> /// <param name="index"></param> /// <returns></returns> public T GetEle(int index) { && index <= count - ) { return data[index]; } else { Console.WriteLine("索引不存在"); return default(T); } } /// <summary> /// 取得数据得长度 /// </summary> /// <returns></returns> public int GetLenght() { return count; } /// <summary> /// 插入 /// </summary> /// <param name="item"></param> /// <param name="index"></param> public void Insert(T item, int index) { && index <= count - ) { for (int i = count; i >= index; i--) { data[i + ] = data[i]; } data[index] = item; count++; } else { Console.WriteLine("不存在索引"); } } public bool isEmpty() { ; } /// <summary> /// 数据的位置 /// </summary> /// <param name="value"></param> /// <returns></returns> public int Locate(T value) { ; i < count; i++) { if (i.Equals(value)) { return i; } } ; } } }
测试
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _001_线性表 { class Program { static void Main(string[] args) { SeqList<string> seqList = new SeqList<string>(); seqList.Add("); seqList.Add("1zxc"); seqList.Add("asd3"); Console.WriteLine(seqList[]); Console.WriteLine(seqList.GetEle()); seqList.Insert(); ; i < seqList.GetLenght(); i++) { Console.Write(seqList[i]+" "); } Console.WriteLine(); seqList.Delete(); ; i < seqList.GetLenght(); i++) { Console.Write(seqList[i] + " "); } Console.WriteLine(); seqList.Clear(); Console.WriteLine(seqList.GetLenght()); } } }
写一个MyList的更多相关文章
- 用C#写一个函数,在一个数组中找出随意几个值相加等于一个值 与迭代器对比
算法!用C#写一个函数,在一个数组中找出随意几个值相加等于一个值比如,数组{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20} 要找出那些数相加等 ...
- 使用golang写一个redis-cli
使用golang写一个redis-cli 0. redis通信协议 redis的客户端(redis-cli)和服务端(redis-server)的通信是建立在tcp连接之上, 两者之间数据传输的编码解 ...
- 用过消息队列?Kafka?能否手写一个消息队列?懵
是否有同样的经历?面试官问你做过啥项目,我一顿胡侃,项目利用到了消息队列,kafka,rocketMQ等等. 好的,那请开始你的表演,面试官递过一支笔:给我手写一个消息队列!!WHAT? 为了大家遇到 ...
- 怎样写一个webpack loader
div{display:table-cell;vertical-align:middle}#crayon-theme-info .content *{float:left}#crayon-theme- ...
- 请写一个php函数,可以接受任意数量的参数
请写一个php函数,可以接受任意数量的参数 这是一道面试题.怎么写这个函数呢? function fun(......) { } ----------------------------------- ...
- 学记:为spring boot写一个自动配置
spring boot遵循"约定优于配置"的原则,使用annotation对一些常规的配置项做默认配置,减少或不使用xml配置,让你的项目快速运行起来.spring boot的神奇 ...
- 自己写一个 jQuery 插件
我知道这一天终将会到来,现在,它来了. 需求 开发 SharePoint 的 CSOM 应用时,经常需要在网页上输出一些信息. 这种需求和 alert 的弹窗.F12 的断点查看信息的场景是不一样的: ...
- 深入浅出React Native 3: 从零开始写一个Hello World
这是深入浅出React Native的第三篇文章. 1. 环境配置 2. 我的第一个应用 将index.ios.js中的代码全部删掉,为什么要删掉呢?因为我们准备从零开始写一个应用~学习技术最好的方式 ...
- 【转】用C写一个简单病毒
[摘要]在分析病毒机理的基础上,用C语言写了一个小病毒作为实例,用TURBOC2.0实现. [Abstract] This paper introduce the charateristic of t ...
随机推荐
- JavaScript插件——模态框
Bootstrap3.0学习第十七轮(JavaScript插件——模态框) 前言 阅读之前您也可以到Bootstrap3.0入门学习系列导航中进行查看http://www.cnblogs.com/ ...
- [转]JavaScriptCore by Example
原文:http://www.bignerdranch.com/blog/javascriptcore-example/ JavaScriptCore is not a new framework; i ...
- Web API 入门指南
Web API 入门指南 - 闲话安全2013-09-21 18:56 by 微软互联网开发支持, 231 阅读, 3 评论, 收藏, 编辑 Web API入门指南有些朋友回复问了些安全方面的问题,安 ...
- css兼容性问题的整理
css兼容性问题的整理 1.文字本身的大小不兼容.同样是font-size:14px的宋体文字,在不同浏览器下占的空间是不一样的,ie下实际占高16px,下留白3px,ff下实际占高17px,上留白1 ...
- ios7学习之路七(隐藏虚拟键盘,解决键盘挡住UITextField问题)
再正式开始之前,先来介绍一下IOS的键盘类型: 一.键盘风格 UIKit框架支持8种风格键盘 typedef enum { UIKeyboardTypeDefault, // 默认键盘:支持所有字符 ...
- C#实战Microsoft Messaging Queue(MSMQ)
C#实战Microsoft Messaging Queue(MSMQ)消息队列(干货) 前言 在使用MSMQ之前,我们需要自行安装消息队列组件!(具体安装方法大家自己搜一下吧) 采用MSMQ带来的好处 ...
- C# 遍历本地网络
public static bool IsHNetCfgWayConnected(string opName) { NetSharingManagerClass netSharingMgr = new ...
- 二.redis 数据类型
本文介绍下redis支持的各种数据类型包括string,list ,set ,sorted set 和hash 1. keysredis本质上一个key-value db,所以我们首先来看看他的key ...
- C++11改进我们的程序之简化我们的程序1
C++11改进我们的程序之简化我们的程序(一) C++11在很多方面可以简化我们的程序开发,我会在“简化我们的程序”这一系列的博文中一一讲到,敬请关注.这次要讲的是:C++11如何通过获取函数模板的返 ...
- C++中的引用和移动语义
C++引用现在分为左值引用和右值引用.其实很好理解,左值引用中的左值指的就是能出现在等号左边的值(带名称的变量,带*号的指针等一类的数据),程序能对这样的左值进行引用获得其地址:右值引用中的右值指的就 ...