数据结构(1):顺序表

近来在自学数据结构与算法,计划每天学一个结构,现在将每天的所得写下,希望能坚持下去,有所收获。

第一天当然是从顺序表开始了。顺序表是线性中的一种,这种方式使用连续的存储单元存储线性表的数据元素。
下面是我使用C#实现的顺序表

 class SqList<T>
    {

        const int MAXSIZE = 20;
        public enum Status { ERROR, OK };

        T[] data;
        int length;

        public SqList() //创建一个空的线性表
        {
            data = new T[MAXSIZE];
            length = 0;
        }

        public Status GetElem(int i, ref T e)  //获得线性表位置第i个元素
        {
            if (this.length == 0 || i < 1 || i > this.length)
                return Status.ERROR;
            e = data[i - 1];
            return Status.OK;

        }

        public int Length() //返回线性表的长度
        {
            return length;
        }

        public Status Insert(int i, T e) //向线性表第i个位置插入元素e
        {
            if (length == MAXSIZE) //顺序线性表已满
                return Status.ERROR;
            if (i < 1 || i > length + 1) //i超出范围
                return Status.ERROR;
            if (i <= length) //i不在表尾
            {
                for (int k = length - 1; k >= i - 1; k--)
                    data[k + 1] = data[k];
            }
            data[i - 1] = e;
            length++;
            return Status.OK;
        }

        public Status Delete(int i) //删除线性表中第i个元素
        {
            if (length == 0) //若线性表为空
                return Status.ERROR;
            if (i < 1 || i > length) // 若i超范围
                return Status.ERROR;
            //e = data[i - 1];
            if (i < length) //若i不在表尾
            {
                for (int k = i; k < length; k++)
                    data[k - 1] = data[k];
            }
            length--;
            return Status.OK;
        }
        public Status Add(T e) //向表尾插入元素e
        {
            if (length >= MAXSIZE - 1) //若线性表已满
                return Status.ERROR;
            data[length] = e;
            length++;
            return Status.OK;
        }

        public void Show() //显示线性表中的元素
        {
            Console.WriteLine("This List has {0} elements.", length);
            for (int i = 0; i < length; i++)
                Console.WriteLine(data[i]);
        }
    }

这个实现还是比较简单的,再接再厉,加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值