1. 主页
  2. 文档
  3. 数组的处理算法
  4. 删除数组中的元素改变长度

删除数组中的元素改变长度

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

namespace DelArrayYes
{
    class Program1
    {
        /// <summary>
        /// 删除数组中的元素,并改变数组的长度
        /// </summary>
        /// <param name="ArrayBorn">要从中删除元素的数组</param>
        /// <param name="Index">删除索引</param>
        /// <param name="Len">删除的长度</param>
        /// <returns>得到的新数组</returns>
        static string[] DeleteArray(string[] ArrayBorn, int Index, int Len)
        {

            // |"m",| "r", "s", "o", "f", "t"  原
            // | 0  |  1    2    3    4    5    6
            //   0  <= 1    2    3    4    5    6

            // "r", "s", "o", "f", "t"         老
            //  0    1    2    3    4    5


            //DeleteArray(ArrayStr, 0, 1);//删除数组中的元素

            if (Len <= 0)  //数据结构的       数据头
            {//判断删除长度是否小于等于0
                return ArrayBorn;//返回源数组
            }

            if (Index == 0 && Len >= ArrayBorn.Length) // 0 && 1>=6      数据尾 
            {//判断删除长度是否超出了数组范围
                Len = ArrayBorn.Length;//将删除长度设置为数组的长度  6
            }
            else if ((Index + Len) >= ArrayBorn.Length) //0+1=1 >= 6   删除的数据的 长度超出界限的话
            {//判断删除索引和长度的和是否超出了数组范围
                Len = ArrayBorn.Length - Index - 1;//设置删除的长度 //   Len 5 =6-0-1
            }

            string[] temArray = new string[ArrayBorn.Length - Len];//声明一个新的数组   6-1= 5

            for (int i = 0; i < temArray.Length; i++)//遍历新数组  // 6  
            {
                //if(0 >= 0){   }else{  }  
                if (i >= Index)
                {//判断遍历索引是否大于等于删除索引    0>=0 1>=0 2>=0 3>=0 4>=0 5>=0 6>=0
                    // temArray[0] = ArrayBorn[1]
                    //Console.WriteLine(i);
                    temArray[i] = ArrayBorn[i + Len];//为遍历到的索引元素赋值      temArray[i] =   ArrayBorn[0+1]   0 <- 1
                    //全部加1,往前走一位。

                }
                else
                {
                    //Console.WriteLine(i);
                    //temArray[1] = ArrayBorn[1]
                    temArray[i] = ArrayBorn[i];//为遍历到的索引元素赋值  temArray[i] = ArrayBorn[0]
                }
            }

            return temArray;//返回得到的新数组
        }

        static void Main(string[] args)
        {
            string[] ArrayStr = new string[] { "m", "r", "s", "o", "f", "t" };//声明一个字符串数组
            Console.WriteLine("源数组:");
            foreach (string i in ArrayStr)//遍历源数组
                Console.Write(i + " ");//输出数组中的元素
            Console.WriteLine();//换行

            string[] newArray = DeleteArray(ArrayStr, 0, 1);//删除数组中的元素

            Console.WriteLine("删除元素后的数组:");

            foreach (string i in newArray)//遍历删除元素后的数组
                Console.Write(i + " ");//输出数组中的元素
            Console.ReadLine();
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DelArrayYes
{
    class Program
    {
        /// <summary>
        /// 删除数组中的元素,并改变数组的长度
        /// </summary>
        /// <param name="ArrayBorn">要从中删除元素的数组</param>
        /// <param name="Index">删除索引</param>
        /// <param name="Len">删除的长度</param>
        /// <returns>得到的新数组</returns>
        static string[] DeleteArray(string[] ArrayBorn, int Index, int Len)
        {

            //  "m", "r", "s", "o", "f", "t"    原
            //   0    1    2    3    4    5     6

            // |"m",| "r", "s", "o", "f", "t"   原
            // | 0  |  1    2    3    4    5    6

            //  "r",  "s", "o", "f", "t"        新
            //   0     1    2    3    4         5

 

            //DeleteArray(ArrayStr, 0, 1);//删除数组中的元素

            //len 不能大于 数组的长度
            //Index 不能小于 0 大于数组的 长度
            //Index+Len 不能大于 数组的长度
            //for 循环 判断

            //1,模拟出数据结构,新的数据结构,老的数据结构
            //2, 模拟画出数据结构的效果图。一步步执行的效果图。
            //2,要写出,执行的方法或者类的,模拟数据。
            //3,要根据数据结构,要判断数据实参,在数据结构中的一些逻辑问题。
            //4,编写出代码来。
            //5, 要勤于思考,逻辑思考。

            if (Len > ArrayBorn.Length)
            {
                return ArrayBorn;
            }
            else if(Index < 0 && Index >ArrayBorn.Length) { 
                Index = ArrayBorn.Length-Index;
            }

            if (Index + Len >ArrayBorn.Length) {
                Index = ArrayBorn.Length - Index-Len;
            }

            string[] temp = new string[ArrayBorn.Length-Index-Len];

            //Console.WriteLine(temp.Length); //5

            for (int i = 0; i < temp.Length; i++) {
                //0>=0  
                if (i >= Index)
                {
                    temp[i] = ArrayBorn[i + Len];
                }
                else {
                    // 0<=0

                    temp[i] = ArrayBorn[i];
                }
            }







            return temp;//返回得到的新数组
        }

        static void Main(string[] args)
        {
            string[] ArrayStr = new string[] { "m", "r", "s", "o", "f", "t" };//声明一个字符串数组
            Console.WriteLine("源数组:");
            foreach (string i in ArrayStr)//遍历源数组
                Console.Write(i + " ");//输出数组中的元素
            Console.WriteLine();//换行

            string[] newArray = DeleteArray(ArrayStr, 0, 1);//删除数组中的元素

            Console.WriteLine("删除元素后的数组:");

            foreach (string i in newArray)//遍历删除元素后的数组
                Console.Write(i + " ");//输出数组中的元素
            Console.ReadLine();
        }
    }
}
这篇文章对您有用吗?

我们要如何帮助您?