Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Операции обращения к полям структуры. ⇐ ПредыдущаяСтр 6 из 6
Определение структуры состоит из двух шагов: · объявление шаблона структуры; общий синтаксис: 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 }
|