using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TestArrayList
{
class Program
{
static void Main(string[] args)
{
int[] data = new int[] { 8, 9, 10, 11, 12 };
int[] data2 = new int[] { 8, 9, 10, 11, 12, 13 };
Write("input1", data);
Write("input2", data2);
var test1_1 = new LinkedList<int>(data);
TestLinked(test1_1);
var test1_2 = new LinkedList<int>(data2);
TestLinked(test1_2);
Write("Test Linked_1", test1_1);
Write("Test Linked_2", test1_2);
var test2_1 = new List<int>(data);
TestArray(test2_1);
var test2_2 = new List<int>(data2);
TestArray(test2_2);
Write("Test Array_1", test2_1);
Write("Test Array_2", test2_2);
TestQueue(null);
}
static void Write<T>(string text, IEnumerable<T> data)
{
Console.WriteLine(text);
foreach (var i in data)
Console.Write("{0} \t", i);
Console.WriteLine("\r\nEND");
}
static void TestLinked(LinkedList<int> inputOutputData)
{
int count = inputOutputData.Count;
bool bSer = false;
int iSer = count / 2;
int lastCount = 0;
var current = inputOutputData.First;
var currentLast = inputOutputData.Last;
for (int i = 0; i < (count-1); i++)
{
lastCount++;
if (lastCount > iSer) bSer = true;
currentLast = currentLast.Previous;
if (bSer) currentLast = currentLast.Previous;
inputOutputData.AddAfter(current, currentLast.Value);
current = current.Next.Next;
}
}
static void TestArray(List<int> inputOutputData)
{
int count = inputOutputData.Count;
bool bSer = false;
int iSer = count / 2;
int lastCount = 0;
var currentI = 0;
var currentLastI = count-1;
for (int i = 0; i < (count - 1); i++)
{
lastCount++;
if (lastCount > iSer) bSer = true;
currentLastI--;
if (bSer) currentLastI--;
inputOutputData.Insert(currentI+1, inputOutputData[currentLastI+i]);
currentI += 2;
}
}
static void TestQueue(Queue<int> inputOutputData)
{
throw new NotImplementedException("Нельзя сделать без доп. массива или контейнера");
}
}
}