КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Применения стека
Стек Типы структур данных ПРИКЛАДНАЯ МЕХАНИКА Юрий Александрович Балакин Иван Андреевич Шевелев Леонид Васильевич Буторин Елена Борисовна Бусыгина
Учебно-практическое пособие
Подписано к печати: Тираж: Заказ №:
Любой набор знаков, рассматриваемый безотносительно к его содержательному смыслу, называют данными. Данные обычно изображают некоторую информацию, которую можно получить, если известен смысл, приписываемый данным. Однако в программировании обычно приходится иметь дело именно с данными. Например, разрабатывая систему хранения и поиска текстов, программист может и не знать их содержания. Его задача - обеспечить экономное использование памяти и быстрый поиск требуемых текстов по заданным признакам. Для решения этой задачи достаточно знать лишь количественные характеристики текстов, рассматриваемых как данные. Вообще, компьютеры выполняют только обработку данных, которая заинтересованным лицам представляется как обработка информации. Совокупности данных, организованные некоторым образом, называются структурами данных. Структура данных определяется набором элементов и отношениями между ними. Структура данных в программе отображается в ту или иную структуру хранения. Так, например, стек может храниться в массиве или линейном списке; массив может быть представлен как последовательность элементов, ортогональный список или дерево и т.д. В настоящем пособии рассматриваются типовые структуры данных, такие как стек, очередь, массив, множество, списки – линейные и нелинейные, различные модификации деревьев; особое внимание уделено четырем базисным методам представления таблиц. Стек – одномерный, динамически изменяемый набор данных. Новый элемент всегда добавляют к одному и тому же концу набора, называемому вершиной стека. Удаление элемента допустимо тоже только из вершины стека. Таким образом, над стеком возможны только две операции: поместить в стек и взять из стека. Стек называют также магазином по аналогии с магазином огнестрельного оружия, в котором патрон последним вставленный в магазин, первым поступает в ствол. По этой же причине дисциплину работы со стеком называют "последний пришел, первый ушел". В английском языке используется аббревиатура LIFO (Last In, First Out). Стек может быть реализован в массиве или в списке. Реализация класса STACK, использующего массив, приведена ниже. // Определение класса const int MAXSTACK=20; // максимальное число элементов в стеке class STACK { // элементы стека -целые числа private: int A[MAXSTACK]; // массив для элементов стека int v; // указатель на вершину стека // (индекс элемента на вершине стека) bool OverFlow; // индикатор переполнения стека bool Empty; // признак "стек пуст" public: STACK(); // конструктор void Push(int NewElement); // поместить в стек int Pop(); // вытолкнуть из стека // возвращает выталкиваемый элемент bool StackOwerFlow(){return OverFlow;}; // Стек переполнен? bool StackIsEmpty(){return Empty;}; // стек пуст? AnsiString ToString(); // создать строку по содержимому // стека для показа };
// Методы класса STACK #include "Stack.h" //--------------------------------- STACK::STACK(){ // конструктор v=-1; // стек пуст OverFlow=false; // стек не переполнен Empty=true; // стек пуст } //---------------------------------- void STACK::Push(int NewElement){ // поместить в стек значение NewElement if(v>=MAXSTACK){ // переполнение OverFlow=true; return; } A[++v]=NewElement; Empty=false; } //----------------------------------- int STACK::Pop(){ int p=-1; // -1 возвращается, если стек пуст if(!Empty){ p=A[v--]; if(v<0){ Empty=true; } } return p; }
Дата добавления: 2014-12-08; Просмотров: 513; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |