Помогите сделать, из очереди на массиве, стек
C# |
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
89
90
| class ArrayList
{
struct ListElement
{
public int Left;//указатель на левый эл-т
public int Right;// на правый
public String Text;//информационное поле ячейки очереди
};
private int First;//указатель на голову очереди
private int Last;// указ на хвост
private ListElement[] elements;
public ArrayList(int size)
{
elements = new ListElement[size];
First = Last = -1;
}
public void Add(string d)//добавление елементов в очередь
{
if (Last < elements.Length - 1)
{
if (Last == -1)
First = 0;
else
elements[Last].Right = Last + 1;//связь ячейки с новой
Last++;//переход на новую ячейку
elements[Last].Left = Last - 1;//связь новой с предыдущей
elements[Last].Right = -1;//ячейка пока что последняя
elements[Last].Text = d;//занесение строки в информационное поле ячейки
}
else
MessageBox.Show("Очередь переполнена.");
}
public void Remove()//удаление эл-та в стеке
{
if (First == -1)
MessageBox.Show("Очередь пуста.");
else
{
First++;//переход на след. ячейку
if (First > Last) //проверка существования ячеек
{
First = Last = -1;
}
else
elements[First].Left = -1;//стерается связь - удаляется ячейка
}
}
public string GetFirst()
{
if (First != -1)
return elements[First].Text;//вывод первого эл-та очереди
else
{
MessageBox.Show("Очередь пуста.");
return null;
}
}
public bool Empty()
{
return (First == -1);
}
public void ShowAll(ref TextBox txtBx_Show)
{
if (First == -1)
MessageBox.Show("Очередь пуста.");
else
{
txtBx_Show.Clear();
int Cur = First;
while (Cur <= Last)//цикл вывода всех эл-в очереди
{
if (txtBx_Show.Text != "") txtBx_Show.Text += " ";
txtBx_Show.Text += elements[Cur].Text;
Cur++;
}
}
}
} |
|