向高手请教,关于C#线性表(在一个数组中的某个位置插入一个数)

lanyanse0504 2011-01-26 08:44:36
主要是插入算法,要求实现效果例如 向数组 num{2,5,6,7,8}中的第三个位置插入数 3
插入后数组变为 {2,5,3,6,7,8}
另要求,不能使用ArrList

我的主要疑问是,向一个数组第x个位置插入某个数,则利用线性表插入原理则从最后一个数开始,将第x个位置后的元素依次
向后移动,然后再在空出来的合适位置将元素插入,这时,第一次移动时,假设利用上面的数组为例,即 num【5】= num
【4】。。(把第5个元素的值赋值给第6

个元素,第4个元素的值赋值给第5个)。。。。,这时便会编译报错,索引超出范围,因为该数组总共只有5个元素,没有第
个位置存放第5个元素的值,这样便无法实现向后移动,请教各位该怎么解决?

不知道我的意思说清楚了没有,各位明白了没?
...全文
308 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yucuihaimeng 2011-01-26
  • 打赏
  • 举报
回复

/// <summary>
/// 向数组指定位置中插入数据
/// </summary>
/// <param name="array">原始数组</param>
/// <param name="index">指定索引位置</param>
/// <param name="data">插入的数据</param>
/// <returns></returns>
static void Insert(ref int[] array,int index,int data)
{
Array.Resize<int>(ref array, array.Length + 1);//扩大原始数组的内存
for (int i = array.Length-1; i >= 0; i--)
{
array[i] = array[i - 1];
if (i-1 == index)
{
array[i - 1] = data;
break;
}
}
}
mjp1234airen4385 2011-01-26
  • 打赏
  • 举报
回复
苍天,你到底是想要线性表还是数组?
不会是你想用数组实现线性表吧?
如果你是科班出生,应该好好复习复习数据结构这本书;如果不是,那就学习学习数据结构。
里面有详细的关于线性表的定义和构建方式。
哪里会用到大数据量的赋值(就是你准备使用的数组向后赋值的办法),都是指针操作的。
一般都是如下的东西:
struct eg
{
public int data;
public IntPtr Next;
}

其中data存放数据,Next存放下一个数据的结构体地址。
q107770540 2011-01-26
  • 打赏
  • 举报
回复

void Main()
{
var num=new int[] {2,5,6,7,8};
var result=num.Take(2).Concat(new int[]{3}).Concat(num.Skip(2));
result.ToList().ForEach(r=>Console.WriteLine(r));
/*
2
5
3
6
7
8

*/
}
evolve724 2011-01-26
  • 打赏
  • 举报
回复
分配一个更大的数组 把原来的数组拷贝过去
绿色夹克衫 2011-01-26
  • 打赏
  • 举报
回复
LZ用List不就好了?
ycagri 2011-01-26
  • 打赏
  • 举报
回复
4楼的可以呀
lanyanse0504 2011-01-26
  • 打赏
  • 举报
回复
还是觉得都不行。。。

111,096

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧