在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
创建结构: public class Link { public string data; public int cur; } 创建: public class Link_list { private int _length = 0; public int Length { get { return _length; } set { _length = value; } } static readonly int MAXSIZE = 10; public static Link[] _arry; public Link_list() { _arry = new Link[MAXSIZE]; Init(); } /// <summary> /// 初始化静态链表 /// </summary> private void Init() { for (int i = 0; i < MAXSIZE; i++) { _arry[i] = new Link(); _arry[i].cur = i + 1; } _arry[MAXSIZE - 1].cur = 1; } /// <summary> /// 返回第一个可用的位置 /// </summary> /// <returns></returns> private int Mallo_() { int i = _arry[0].cur; if (_arry[0].cur > 0) { _arry[0].cur = _arry[i].cur; } return i; } /// <summary> /// 添加一个数据项 /// </summary> /// <param name="l"></param> public void Add(Link l) { int temp= Mallo_(); _arry[temp].data = l.data; _arry[temp].cur = _arry[0].cur; addLength(); } private void addLength() { _length++; } private void delteLength() { _length--; } /// <summary> /// 在指定位置前插入数据 /// </summary> /// <param name="weiz">指定位置</param> /// <param name="l">要插入的数据</param> public void Insert(int weiz, Link l) { if (weiz > _arry[0].cur) { return; } int free_Length = Mallo_(); int temp = MAXSIZE - 1; for (int i = 1; i <= weiz - 1; i++) { temp = _arry[temp].cur; } l.cur = _arry[temp].cur; _arry[temp].cur = free_Length; _arry[free_Length] = l; addLength(); } public void Delete(int weiz) { if (weiz >= _arry[0].cur) { return; } int k = _arry[MAXSIZE-1].cur; for (int i = 1; i <weiz-1; i++) { k = _arry[k].cur; } //k=1 //假如我要删除第2个 //temp=2 int tmep = _arry[k].cur;//得到第2个的下一个 _arry[k].cur = _arry[tmep].cur; _free(tmep); delteLength(); } private void _free(int i) { _arry[i].cur = _arry[0].cur; _arry[i].data = null; _arry[0].cur = i; } } 使用: static void Main(string[] args) { Link_list ls = new Link_list(); Link l1 = new Link() { data="小花"}; Link l2 = new Link() { data = "小白" }; Link l3 = new Link() { data = "小虎" }; Link l4 = new Link() { data = "小涛" }; Link l5 = new Link() { data = "小智" }; ls.Add(l1); ls.Add(l2); ls.Add(l3); foreach (var item in Link_list._arry) { Console.WriteLine(string.Format("数据:{0},游标:{1}", item.data, item.cur)); } Console.WriteLine("--------------------------------------------------------------"); //ls.Delete(2); ls.Insert(2, l4); foreach (var item in Link_list._arry) { Console.WriteLine(string.Format("数据:{0},游标:{1}",item.data,item.cur)); } //ls.Insert(1, l1); Console.Read(); } 优点: 插入时不需要大幅度的移动数组元素 缺点: 修改时复杂度为0(n) |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论