-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathArray_Of_Dates.cs
More file actions
88 lines (81 loc) · 3.26 KB
/
Array_Of_Dates.cs
File metadata and controls
88 lines (81 loc) · 3.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
using System;
// в модуле с помощью одномерного массива и курсоров реализован однонаправленный список элементов типа Date.
// напишите функцию, которая по индексу элемента удаляет его из списка
namespace Training3
{
class Program
{
public static DateTime freeElement = new DateTime();
public struct MyList
{
public struct DateElement
{
public DateTime element;
public int nextElement;
public DateElement(DateTime time, int nextElement)
{
this.element = time;
this.nextElement = nextElement;
}
}
public DateElement[] array;
public int firstElement;
public int firstFreeElement;
}
static void Main(string[] args)
{
MyList list = new MyList();
list.array = new MyList.DateElement[4];
list.array[0] = new MyList.DateElement(DateTime.Now, 1);
list.array[1] = new MyList.DateElement(DateTime.Now, 2);
list.array[2] = new MyList.DateElement(DateTime.Now, -1);
list.array[3] = new MyList.DateElement(freeElement, -1);
list.firstElement = 0;
list.firstFreeElement = 3;
RemoveElement(ref list, 3);
Console.ReadKey();
}
public static void RemoveElement(ref MyList list, int index)
{
try
{
if (list.firstElement == -1)
{
Console.WriteLine("Список пустой");
return;
}
int indexRemove;
if (index != 0)
{
int previousElement = SearchSimpleIndex(list, index - 1);
indexRemove = list.array[previousElement].nextElement;
list.array[previousElement].nextElement = list.array[indexRemove].nextElement;
}
else
{
indexRemove = list.firstElement;
list.firstElement = list.array[indexRemove].nextElement;
}
list.array[indexRemove].element = freeElement;
list.array[indexRemove].nextElement = list.firstFreeElement;
list.firstFreeElement = indexRemove;
}
catch (IndexOutOfRangeException)
{
Console.WriteLine("Элемента по такому индексу не существует или список не правильно записан");
}
}
private static int SearchSimpleIndex(MyList list, int index)
{
int simpleIndex = list.firstElement;
int currentIndex = 0;
while (list.array[simpleIndex].nextElement != -1 && currentIndex != index)
{
simpleIndex = list.array[simpleIndex].nextElement;
currentIndex++;
}
if (currentIndex == index) return simpleIndex;
else throw new IndexOutOfRangeException();
}
}
}