当前位置:   article > 正文

Unity_C#_数据结构与简单算法_unity常用数据结构和算法

unity常用数据结构和算法

数据结构介绍

 

 

线性表介绍

示例代码:

List集合线性表

  1. using System;
  2. using System.Collections.Generic;
  3. namespace _001_线性表
  4. {
  5. class Program
  6. {
  7. static void Main(string[] args)
  8. {
  9. //List集合 就是一个线性结构表
  10. List<string> list = new List<string>();
  11. //添加数据
  12. list.Add("我是");//0
  13. list.Add("你爸");//1
  14. list.Add("啊啊");//2
  15. Console.WriteLine(list[1]);
  16. Console.WriteLine("List集合内容个数 =>"+list.Count);
  17. }
  18. }
  19. }

]

C#官方 自定线性表List集合

  1. using System;
  2. using System.Collections.Generic;
  3. namespace _001_线性表
  4. {
  5. class Program
  6. {
  7. static void Main(string[] args)
  8. {
  9. //List集合 就是一个线性结构表
  10. List<string> list = new List<string>();
  11. //添加数据
  12. list.Add("我是");//0
  13. list.Add("你爸");//1
  14. list.Add("啊啊");//2
  15. Console.WriteLine(list[1]);
  16. Console.WriteLine("List集合内容个数 =>"+list.Count);
  17. }
  18. }
  19. }

 

自定义实现 List集合 存储数据过程:

首先定义一个接口 IListXing.cs

  1. using System;
  2. namespace _001_线性表
  3. {
  4. public interface IListXing<T>
  5. {
  6. //得到长度
  7. public int GetLengh();
  8. //清空
  9. public void Clear();
  10. //是否为空
  11. public bool IsEmpty();
  12. //添加元素
  13. public void Add(T item);
  14. //指定位置 插入数据
  15. public void Insert(T item,int index);
  16. //删除指定位置 数据
  17. public T Delete(int index);
  18. //定义一个索引器 获取元素
  19. public T this[int index] { get; }
  20. //获取元素
  21. public T GetEle(int index);
  22. //按找值 来查找
  23. public int Locate(T value);
  24. }
  25. }

实现这个IListXing接口的方法 定义一个XingList.cs

  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. namespace _001_线性表
  5. {
  6. public class XingList<T>:IListXing<T> //实现自定义接口
  7. {
  8. //存储数据
  9. private T[] data;
  10. //数据的个数
  11. private int count = 0;
  12. //构造方法 创建好的时候初始化
  13. public XingList(int size)
  14. {
  15. data = new T[size];
  16. count = 0;
  17. }
  18. //默认初始化构造函数长度为 10
  19. public XingList() : this(10) {
  20. }
  21. //添加数据
  22. public void Add(T item)
  23. {
  24. if (count == data.Length)
  25. {
  26. Console.WriteLine("我已经满了,你他娘的还往我这塞");
  27. }
  28. else {
  29. data[count] = item;
  30. count++;
  31. }
  32. }
  33. //获得List长度
  34. public int GetLengh()
  35. {
  36. return count;
  37. }
  38. //清空集合
  39. public void Clear()
  40. {
  41. count = 0;
  42. }
  43. //判断 集合里是否有数据
  44. public bool IsEmpty()
  45. {
  46. return count == 0;
  47. }
  48. //在指定位置 新增数据 插入数据
  49. public void Insert(T item, int index)
  50. {
  51. for (int i = count-1; i >= index; i++)
  52. {
  53. data[i + 1] = data[i];
  54. }
  55. data[index] = item;
  56. count++;
  57. }
  58. //通过索引器 返回 指定位置数据
  59. public T this[int index] {
  60. get{ return GetEle(index); }
  61. }
  62. //删除指定位置 数据
  63. public T Delete(int index)
  64. {
  65. T delItem = data[index]; //删除的数据
  66. for (int i = index+1; i < count; i++)
  67. {
  68. data[i - 1] = data[i]; //从删除的位置 开始从后向前移动
  69. }
  70. count--;
  71. return delItem; //返回删除的数据
  72. }
  73. //通过index下标 获取数据
  74. public T GetEle(int index)
  75. {
  76. if (index >= 0 && index <= count - 1)
  77. {
  78. //索引存在
  79. return data[index];
  80. }
  81. else {
  82. Console.WriteLine("索引不存在");
  83. return default(T);
  84. }
  85. }
  86. //根据给定数据 返回其在数组里下标位置
  87. public int Locate(T value)
  88. {
  89. for (int i = 0; i < count; i++)
  90. {
  91. if (data[i].Equals(value)) {
  92. return i;
  93. }
  94. }
  95. return -1; //执行到这里 说明数组里没有该数据 返回-1
  96. }
  97. }
  98. }

使用 XingList 进行输出 Program.cs

  1. using System;
  2. using System.Collections.Generic;
  3. namespace _001_线性表
  4. {
  5. class Program
  6. {
  7. static void Main(string[] args)
  8. {
  9. XingList<string> xingList = new XingList<string>();
  10. xingList.Add("元哥");
  11. xingList.Add("富少");
  12. xingList.Add("电竞Fuck肖");
  13. Console.WriteLine("集合的长度 =>"+xingList.GetLengh());
  14. Console.WriteLine("输出集合的第二个值 =>"+xingList[1]);
  15. for (int i = 0; i < xingList.GetLengh(); i++)
  16. {
  17. Console.WriteLine("第"+i+"个XingList的集合的数据===>"+ xingList[i]);
  18. }
  19. xingList.Delete(2); //删除第三数据
  20. for (int i = 0; i < xingList.GetLengh(); i++)
  21. {
  22. Console.WriteLine("删除后=>第" + i + "个XingList的集合的数据===>" + xingList[i]);
  23. }
  24. xingList.Clear();
  25. for (int i = 0; i < 2; i++)
  26. {
  27. Console.WriteLine("清空后=>第" + i + "个XingList的集合的数据===>" + xingList[i]);
  28. }
  29. Console.ReadLine();
  30. }
  31. }
  32. }

单链表

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/95372
推荐阅读
相关标签
  

闽ICP备14008679号