Удвоение всех вхождений элементов, расположенных на четных (0-четное) позициях (DublicateOnEvenPos() - C#
Формулировка задачи:
Удвоение всех вхождений элементов, расположенных на четных (0-четное) позициях (DublicateOnEvenPos()).
не могу понять почему не удваивает
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Laba4
{
class Program
{
static void Main(string[] args)
{
List<int> arr = new List<int>();
int n = int.Parse(Console.ReadLine());
int[] array = new int[n];
for (int i = n; i >= 0; i--)
{
arr.AddFirst(i);
}
arr.Reset();
do
{
Console.Write("{0} ",arr.Current);
}
while (arr.MoveNext());
arr.DublicateOnEvenPos(n,array);
Console.ReadLine();
}
}
}using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Laba4
{
class List<T>
{
class ListItem<T>
{
public T Data { get; set; }
public ListItem<T> Next { get; set; }
}
private ListItem<T> first;
private ListItem<T> current;
public T Current
{ get { return current.Data; }
set
{
if(current!=null)
{ current.Data=value;}
}
}
public void Reset()
{
current = first;
}
public void AddFirst(T Data)
{
if (first == null)
{
first = new ListItem<T>() { Data = Data };
current = first;
}
else
{
ListItem<T> temp = new ListItem<T>() { Data = Data };
temp.Next = first;
first = temp;
}
}
public bool MoveNext()
{
if (current!=null)
{
current = current.Next;
return current != null;
}
return false;
}
public T[] DublicateOnEvenPos(int n,T[] array)
{
//задаем новый массив, длиной в 2 раза больше
T[] arr = new T[n * 2];
int j = 0;
//Заполнение нового массива
for (int i = 0; i < n; i++)
{
//Проверка номера элемента на четность
if (i % 2 == 0)
{
//Заполняем новый массив
arr[j] = array[i];
j++;
}
//Заполняем новый массив
arr[j] = array[i];
j++;
}
n = j;
//Длину старого массива делаем такой же как у нового
array = arr;
return array;
}
}
}Решение задачи: «Удвоение всех вхождений элементов, расположенных на четных (0-четное) позициях (DublicateOnEvenPos()»
textual
Листинг программы
public T[] DublicateOnEvenPos<T>(int n, T[] array)
{
var arr = new T[n << 1];
for (var i = 0; i < arr.Length; i += 2)
{
arr[i] = array[i >> 1];
arr[i + 1] = array[i >> 1];
}
return arr;
}