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();
}
}
}