4079人加入学习
(3人评价)
C#编程-第五季-数据结构和算法-宇宙最简单教程

制作完成于2015年,2021年重新编辑

价格 免费

个人理解 

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp15
{
    /// <summary>
    /// 顺序表实现方式
    /// </summary>
    /// <typeparam name="T"></typeparam>
    internal class SeqList<T> : IListDS<T>//继承泛型接口
    {
        private T[] data;//用来存储数据
        private int count = 0;//表示存了多少个数据

        public SeqList(int size)//size就是最大容量
        {
            data = new T[size];
            count = 0;
        }

        public SeqList() : this(10)
        {

        }
        public int GetLength()//获取长度
        {
            return count;
        }

        public void Clear() //清空操作
        {
            count = 0;
        }

        public bool IsEmpty()//判断线性表是否为空
        {
            return count == 0;
        }

        public void Add(T item) //附加操作
        {
            //如果下标等于集合最多能存的数量
            if (count == data.Length) Console.WriteLine("当前顺序表已存满,不允许再存入");
            else
            {
                data[count] = item;//如果没有存满,那么再结尾出存入要添加的数据
                count++;//然后当前数据的下标+1
            }
        }

        public void Insert(T item, int index)        //插入操作       要存的数据  要在哪个下标存         
        {
            for (int i = count - 1; i >= index; i--)      //i等于当前下标-1  i大于等于要存存储的位置  递减             
                data[i + 1] = data[i];                           //集合当前下标的下一个位置的数据等于当前下标的数据 就是被插入的位置的数据往后挪动            
            data[index] = item;                                             //然后要插入的 数据等与要插入的位置
            count++;                                                             //集合的大小加一
        }
        public T Delete(int index) //删除操作                                      
        {
            T temp = data[index];//temp表示要删除的元素地址
            for (int i = index + 1; i < count; i++)//i=要删除的元素地址+1  i<数组的长度 每次加1
            {
                data[i - 1] = data[i];//如果i是5 data[i-1]是4
            }
            count--;
            return temp;
        }

        public T this[int index]//取表元
        {
            get { return GetEle(index); }
        }

        public T GetEle(int index)//定义一个索引器 获取元素
        {
            //如果到查询的位置大于等于0 并且小于等于最大位置 那么返回这个元素
            if (index >= 0 && index <= count - 1) return data[index];
            //如果这个位置不符合上面的条件 等于查询的元素不在这个范围内  那么返回默认值
            else { Console.WriteLine("索引不存在"); return default(T); }
        }

        public int Locate(T value) //按值查找
        {     //遍历当前集合                    //如果集合的第i个等于当前要查询的值 那么返回i
            for (int i = 0; i < count; i++) if (data[i].Equals(value)) return i;
            return -1;//没有查到就返回一个空
        }
    }
}

 

[展开全文]

线性表的实现方式

1.顺序表

2.单链表

3.双向链表

4.循环链表

[展开全文]

线性表的两种实现方式:

顺序表

单链表

 

[展开全文]

授课教师

SiKi学院老师

课程特色

下载资料(1)
视频(28)

学员动态