Добавление элемента в очередь
Рассмотрим алгоритм добавления только для второго элемента.
1. Ввод информации для текущего (второго) элемента – значение i .
2. Захватываем память под текущий элемент:
t = (Spis*) malloc (sizeof(Spis)); или t = new Spis;
3. Формируем информационную часть (обозначим i2):
t -> info = i;
4. В адресную часть созданного элемента (текущего) заносим NULL, т.к. этот элемент становится последним:
t -> Next = NULL;
5. Элемент добавляется в конец очереди, поэтому в адресную часть бывшего последнего элемента end заносим адрес созданного:
end -> Next = t;
бывший последний элемент становится предпоследним.
6. Переставляем указатель последнего элемента на добавленный:
end = t;
В результате получим
Для добавления в очередь любого количества элементов организуется цикл, включающий пункты 1– 6 рассмотренного алгоритма. Завершение цикла реализуется в зависимости от поставленной задачи.
Обобщим рассмотренные этапы, тогда функция формирования очереди из данных объявленного типа с добавлением новых элементов в конец может иметь следующий вид:
void Create(Spis **begin, Spis **end) {
Spis *t = (Spis*) malloc(sizeof(Spis));
printf(“\n Input Info ”);
scanf(“%d”, &t -> info);
t -> Next = NULL;
if(*begin == NULL) // Формирование первого элемента
*begin = *end = t;
else {
(*end) -> Next = t; // Добавление в конец
*end = t;
}
}
Участок программы с обращением к функции Create для добавление необходимого количества элементов в очередь может иметь следующий вид:
¼
Spis *begin = NULL, *end;
int repeat = 1;
while(repeat) { // repeat=1 – продолжение ввода данных
Create(&begin, &end);
printf(“ Stop - 0 ”); // repeat=0 – конец ввода данных
scanf(“%d”, &repeat);
}
¼
Дата добавления: 2015-09-11; просмотров: 1247;