Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Операции обращения к полям структуры.






Определение структуры состоит из двух шагов:

· объявление шаблона структуры;

общий синтаксис:

struct имя_шаблона

{

тип1 имя_переменной1;

тип2 имя_переменной2;

// другие члены данных;

};

· определение переменных типа объявленного шаблона.

общий синтаксис:

struct имя_шаблона имя_переменной;

Двунаправленный список. Алгоритм добавления элемента.

Двухсвязным (двунаправленным) является список, в адресную часть которого кроме указателя на следующий элемент включен и указатель на предыдущий.

Зададим структуру, в которой адресная часть состоит из указателей на предыдущий (prev) и следующий (next) элементы:

struct Spis2 {

int info;

Spis2 *prev, *next;

} *begin, *end;

Формирование двунаправленного списка проводится в два этапа – формирование первого элемента и добавление нового, причем добавление может выполняться как в начало (begin), так и в конец (end) списка.

Добавить в список новый элемент можно как в начало, так и в конец. Если элемент добавляется в начало списка, то выполняется следующая последовательность действий:

t -> prev = NULL; // Предыдущего нет

t -> next = begin; // Связываем новый элемент с первым

begin -> prev = t; // Изменяем адрес prev бывшего первого

begin = t; // Переставляем указатель begin на новый

В конец элемент добавляется следующим образом:

t -> next = NULL; // Следующего нет

t -> prev = end; // Связываем новый с последним

end -> next = t; // Изменяем адрес next бывшего последнего

end = t; // Изменяем указатель end

Двунаправленный список. Алгоритм освобождения памяти, занятой списком.

Двухсвязным (двунаправленным) является список, в адресную часть которого кроме указателя на следующий элемент включен и указатель на предыдущий.

Функция освобождения памяти, занятой списком:

void Del_All(Stack **p) {

Stack *t;

while(*p! = NULL) {

t = *p;

*p = (*p) -> Next;

delete t; } }

Обращение к этой функции: Del_All(& begin); после ее выполнения указатель на вершину begin будет равен NULL.

Двунаправленный список. Алгоритм удаления элемента из стека.

Двухсвязным (двунаправленным) является список, в адресную часть которого кроме указателя на следующий элемент включен и указатель на предыдущий.

Стек – структура типа LIFO (Last In, First Out) – последним вошел, первым выйдет. Элементы в стек можно добавлять или извлекать только через его вершину.

Функция получения информации из вершины стека c извлечением:

Stack* OutStack(Stack* p, int *out) {

Stack *t = p; // Устанавливаем указатель t на вершину p

*out = p -> info;

p = p -> next; // Переставляем вершину p на следующий

delete t; // Удаляем бывшую вершину t

return p; // Возвращаем новую вершину p

}


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.006 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал