Мне нужно описать структуру ОЧЕРЕДИ, в инфополе которой будет строка максимум 20 символов, и методы к ней. Проверьте, что не так ?:
Добавлено через 12 минут
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
91
92
93
94
95
96
97
| #include <iostream>
#include <cstdlib>
using namespace std;
//СТРУКТУРА БУДЕТ ЭЛЕМЕНТОМ СПИСКА
#define MAX_LEN 20
struct Node //или просто Звено списка
{
char str[MAX_LEN];//инфо данные структуры
Node *Next; //Указатель не следующее звено
};
//КЛАСС СПИСОК
class List
{
Node *Head,*Tail; //Указатели на начало списка и на конец
public:
List():Head(NULL),Tail(NULL){}; //Инициализация указателей как пустых
~List(); //Деструктор для освобождения памяти от всего что будет
void Add(char str[MAX_LEN]); //Функция заполнения структуры Node и добавления её в список как элемента
void Show(); //Функция отображения списка List
void del(); //Функция изъятия элемента
};
void List::Show()
{
Node *temp=Head; //Временный указатель на начало списка
while (temp!=NULL) //Пока в списке что-то встречается
{
cout<<temp->str[MAX_LEN]<<" "; //Выводим значения из списка на экран
temp=temp->Next; //Сдвигаем указатель на начало на адрес следующего элемента
}
cout<<endl;
}
List::~List() //ДЕСТРУКТОР ДЛЯ ОЧИСТКИ ПАМЯТИ
{
Node *temp=Head; //Временный указатель на начало списка
while (temp!=NULL) //Пока в списке что-то есть
{
temp=Head->Next; //Резерв адреса на следующий элемент списка
delete Head; //Освобождение памяти от первой структуры как элемента списка
Head=temp; //Сдвиг начала на следующий адрес, который берем из резерва
}
}
//ФУНКЦИЯ ЗАПОЛНЕНИЯ ИНФОРМАЦИОННЫХ ПОЛЕЙ СТРУКТУРЫ NODE И ДОБАВЛЕНИЯ ЭТОЙ СТРУКТУРЫ В СПИСОК
void List::Add(char str[MAX_LEN])
{
Node *temp=new Node; //Выделение памяти для нового звена списка
temp->str[MAX_LEN]=str[MAX_LEN]; //Временное запоминание принятого параметра x
temp->Next=NULL; //Указание, что следующее звено новосозданной структуры пока пустое
if (Head!=NULL) //Если список не пуст
{
Tail->Next=temp; //Указание, что следующее звено списка это новосозданная структура
Tail=temp;
} else Head=Tail=temp; //Если список не пуст, добавление первого элемента
}
//ФУНКЦИЯ ОТОБРАЖЕНИЯ СПИСКА НА ЭКРАНЕ
//ФУНКЦИЯ ИЗЪЯТИЯ ЭЛЕМЕНТА ИЗ ОЧЕРЕДИ
void List::del()
{
if (Head!=NULL) //Если список не пустой
{
Node *temp=Head; //Обращаемся к началу списка с помощью вспомогательного указателя
cout<<"ЭЛЕМЕНТ "<<Head->str[MAX_LEN]<<" ВЫШЕЛ"<<endl;
Head=Head->Next; //Сдвиг начала списка
delete temp; //Освобождение памяти от предыдущего звена списка
}
}
void main(){
char stroka[MAX_LEN], stroka2[MAX_LEN];
List lst;
cin>>stroka;
cin>>stroka2;
lst.Add(stroka);
lst.Add(stroka2);
lst.Show();
system("PAUSE");
} |
|
Добавлено через 18 минут
как сделать это без использования классов?