- •Связанные структуры
- •Void dop1 ( stack*&s )
- •Int cht ( stack *s )
- •Int cht1 ( stack *s )
- •Void main ( )
- •Очередь
- •Void main ( )
- •Функции списка
- •Void print(spisoc st)
- •Void print1(spisoc st)
- •Void dop (spisoc*&s, spisoc*st)
- •Void dop1 (spisoc*&s)
- •Void cht(spisoc*s)
- •Void cht1(spisoc*s)
- •Void poisk (spisoc*s, int year)
- •Void poisk1 (spisoc*s, int year)
- •Void ud (spisoc*&s, int year)
- •Void ud1 (spisoc*&s,int year)
- •Void osv (spisoc*&s)
- •Void main()
Связанные структуры
Если программа должна работать с фиксированным числом экземпляров одного типа структуры, то объявляется массив структур.
Если заранее не известно, сколько будет структур, можно пользоваться связанными структурами, в которых каждая отдельная структура связана с помощью указателей с соседней или с соседними.
То есть
- количество элементов не известно – статический массив не подходит;
- количество элементов определяется только в конце работы – динамический массив не подходит.
Рассмотрим линейные связанные структуры.
Все элементы связанных структур представляют собой последовательность элементов, связанных в цепь посредством указателей.
2) ОП для элементов выделяется и освобождается динамическая (new – delete или malloc – free )
последовательность элементов имеет вершину(начало) и хвост (конец).
К линейным связанным структурам относятся стеки, очереди, списки, и т. д., включение и исключение элементов в которых происходит по-разному:
в стеке включение и исключение происходит только с одного конца – с вершины стека;
в очереди включение происходит в хвосте цепи (конец очереди), а исключение происходит с вершины цепи (начало очереди);
в списке включение и исключение элементов происходит по-разному, например, если элементы списка упорядочены по определенному признаку (одному из полей структуры), включение и исключение происходит в любом месте цепи, так чтобы не нарушать порядок списка.
Элемент связанной структуры должен состоять из данного в обычном понимании и из ссылочного элемента (указателя), посредством которого будет осуществляться связь с другими элементами
Стек
Стек – это связанная структура данных, в которой добавлять, удалять и читать данные можно только с одного конца, т.е. доступен только элемент, добавленный в стек последним.
Стек – это организация данных, в которой элемент, поступивший в стек последним извлекается первым.
Все действия происходят с вершинным элементом.
новый
элемент вершина стека
хвост стека
data
next
data
next
data
next
data
next
data
next
0
s-указатель на вершину до включения
stnew ->next= s
s= stnew -указатель на вершину после включения.
Рассмотрим функции
включения нового элемента
исключения элемента
считывание данных с вершины стека
//Функция дополнения стека:
#include <iostream>
using namespace std;
struct stack { int data; stack * next ; }//узел стека
stack * beg; // указатель на вершину стека – глобальный
//-------------------------------------------------------------------------------
//Функция дополнения стека:
void dop ( stack*&s, int dat ) // cссылка на указатель для передачи
// адреса вершины стека и данные для нового элемента
/*адрес вершины стека будет меняться в функции дополнения, поэтому указатель на вершину-глобальная переменная будет передаваться в функцию по ссылке, в нее и будут записываться все изменения адреса вершины*/
{
stack * stnew; // указатель на новый элемент стека
stnew = new ( stack) ; // выделение памяти под новый элемент
stnew ->data = dat; // размещение информации в новый элемент
stnew->next=s; //“указывает” на бывшую вершину стека
s = stnew; // указатель на вершину –это указатель на новый элемент
} //новый элемент стал вершиной стека.
//---------------------------------------------------------------------------------
//Функция дополнения стека с клавиатуры:
