Exemplo n.º 1
0
        //在第i个位置插入数据e实现思路:在保证不满和逻辑正确的情况下,将第i-1个元素开始,后面的元素往后移动一位(复制),然后将
        //第i-1个元素赋值为e,并改变length,返回e
        //!!!这里其实可以返回一些错误代码,或者一些提示信息。或者正确的话不提示,错误的话返回可能出错的信息
        public static int ListInsert(Sqlist L, int i, int e)
        {
            int k;

            /*线性表已满*/
            if (L.length == MAXSIZE)
            {
                return(ERROR);
            }
            /*i不在范围内*/
            if (i < 1 || i > L.length + 1)
            {
                return(ERROR);
            }
            /*如果插入数据位置不在表尾*/
            if (i <= L.length)
            {
                /*将要插入位置后数据元素向后移动一位*/
                for (k = L.length - 1; k >= i - 1; k--)
                {
                    L.data[k + 1] = L.data[k];
                }
            }
            /*将新元素插入*/
            L.data[i - 1] = e;
            L.length++;
            return(e);
        }
Exemplo n.º 2
0
        //删除第i个位置数据的思路:(默认满足符合逻辑),然后将后面的数据统一往前移,复制(覆盖)
        public static int ListDelete(Sqlist L, int i)
        {
            int k;

            /*线性表为空,个人认为这里应该抛出一个自定义异常,而非int类型的ERROR,因为返回删掉的值会更加合理*/
            if (L.length == 0)
            {
                return(ERROR);
            }
            /*删除位置不正确*/
            if (i < 1 || i > L.length)
            {
                return(ERROR);
            }
            int e = L.data[i - 1];

            /*如果删除的不是最后位置*/
            if (i < L.length)
            {
                /*将删除位置后继元素前移*/
                for (k = i; k < L.length; k++)
                {
                    L.data[k - 1] = L.data[k];
                }
            }
            L.length--;
            return(e);
        }
Exemplo n.º 3
0
        /*i从1开始*/
        //获取元素思路:直接返回第i-1个数组元素
        public static int GetElem(Sqlist L, int i)
        {
            if (L.length == 0 || i < 1 || i > L.length)
            {
                return(ERROR);
            }
            int e = L.data[i - 1];

            return(e);
        }