Структуры данных. Стек. Очередь

Характеристика таких типов сложных структур данных как стек и очередь. Разработка блок схемы программы реализации стека на языке программирования Си. Разработка программы для создания структуры данных, с использованием двух стеков на основании массивов.

Рубрика Программирование, компьютеры и кибернетика
Вид практическая работа
Язык русский
Дата добавления 22.10.2017
Размер файла 247,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Министерство образования и науки Российской Федерации

Калужский филиал федерального государственного бюджетного образовательного учреждения высшего профессионального образования

«Московский государственный технический университет

имени Н.Э. Баумана»

(КФ МГТУ им. Н.Э. Баумана)

ФАКУЛЬТЕТ " Электроника, информатика и управление"

КАФЕДРА "Конструирование и производство электронной аппаратуры"

ПРАКТИЧЕСКАЯ РАБОТА №7

ДИСЦИПЛИНА: " Функциональная логика и теория алгоритмов "

ТЕМА: " Структуры данных. Стек. Очередь. "

Выполнил: студент гр. РПВ.Б-31

Тер-Погосян Р.Э.

Проверил: Соловьёв И.В.

Калуга, 2014 г.

Введение

Цель работы: познакомиться с языком программирования Си. Изучить сложные структуры данных.

Теоретические сведения

Стек

Стек (англ. stack -- стопка) -- структура данных, в которой доступ к элементам организован по принципу «последним пришёл -- первым вышел».

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

Например, создадим простейший стек с использованием массива:

После компиляции и проверки работоспособности программы создайте блок схему алгоритма работы.

Очередь

Очередь -- структура данных, в которой доступ к элементам организован по принципу «первым пришёл -- первым вышел». Для работы с очередью определяются несколько операций: enqueue (запись в очередь) и dequeue (чтение из очереди). данные стек очередь программа

Существует несколько вариантов реализации очереди. Одним из таких вариантов является построение очереди из двух стеков.

Задание 1. Нарисовать блок схему программы реализации стека, приведённую выше

#include <stdio.h>

#include <stdlib.h>

#define STACK_SIZE 10

int stackArray[STACK_SIZE];

int stackPointer=-1;

void pushStack(int x)

{

if(stackPointer<STACK_SIZE)

{

stackPointer=stackPointer+1;

stackArray[stackPointer]=x;

}

else

{

printf("Stack is full \n");

}

}

int popStack()

{

int r=0;

if(stackPointer>-1)

{

r=stackArray[stackPointer];

stackPointer=stackPointer-1;

return r;

}

else

{

printf("Stack is empty \n");

return(0);

}

}

int main(int argc, char *argv[])

{

int a=0;

printf("Vvedite chislo v stack \n");

scanf("%d" , &a);

pushStack(a);

printf("Vvedite chislo v stack \n");

scanf("%d" , &a);

pushStack(a);

printf("Vvedite chislo v stack \n");

scanf("%d" , &a);

pushStack(a);

printf("Vivod iz stack: \n");

a=popStack();

printf(" %d \n", a);

a=popStack();

printf(" %d \n", a);

a=popStack();

printf(" %d \n", a);

system("PAUSE");

return 0;

}

Задание 2. Написать программу, позволяющую создавать такую структуру данных как очередь. Использовать два стека на основе массивов

#include <stdio.h>

#include <stdlib.h>

#define STACK_SIZE 10

int stackArray2[STACK_SIZE];

int stackPointer2=-1;

void pushStack2(int x)

{

if(stackPointer2<STACK_SIZE)

{

stackPointer2=stackPointer2+1;

stackArray2[stackPointer2]=x;

}

else

{

printf("Stack is full \n");

}

}

int popStack2()

{

int r=0;

if(stackPointer2>-1)

{

r=stackArray2[stackPointer2];

stackPointer2=stackPointer2-1;

return r;

}

else

{

printf("Stack is empty \n");

return(0);

}

}

int stackArray1[STACK_SIZE];

int stackPointer1=-1;

void pushStack1(int x)

{

if(stackPointer1<STACK_SIZE)

{

stackPointer1=stackPointer1+1;

stackArray1[stackPointer1]=x;

}

else

{

printf("Stack is full \n");

}

}

int popStack1()

{

int r=0;

if(stackPointer1>-1)

{

r=stackArray1[stackPointer1];

stackPointer1=stackPointer1-1;

return r;

}

else

{

printf("Stack is empty \n");

return(0);

}

}

void enqueue(int x)

{

pushStack1(x);

}

int dequeue()

{

int z;

int y;

int i;

int kounter;

kounter=stackPointer1;

for(i=0;i<=kounter;i++)

{

y=popStack1();

pushStack2(y);

}

z=popStack2();

return z;

}

int main(int argc, char *argv[])

{

int a=0;

printf("Vvedite chislo v ochered \n");

scanf("%d" , &a);

enqueue(a);

printf("Vvedite chislo v ochered \n");

scanf("%d" , &a);

enqueue(a);

printf("Vivod iz ochered: \n");

a=dequeue();

printf(" %d \n", a);

a=dequeue();

printf(" %d \n", a);

system("PAUSE");

return 0;

}

Вывод

Познакомились с языком программирования Си. Изучили сложные структуры данных.

Размещено на Allbest.ru

...

Подобные документы

  • Средства создания динамических структур данных. Формат описания ссылочного типа. Структура памяти во время выполнения программы. Линейные списки, стек, очередь. Организация списков в динамической памяти. Пример создания списка в обратном порядке.

    лабораторная работа [788,2 K], добавлен 14.06.2009

  • Разработка алгоритмов на динамических структурах данных. Описание структуры данных "стек". Процедуры добавления и удаления элемента, очистки памяти. Код распечатки содержимого всего стека. Инструкция пользователя, код программы, контрольный пример.

    курсовая работа [22,9 K], добавлен 19.10.2010

  • Проблемы с организацией данных. Определение и классификация динамических структур данных. Линейные односвязные, двухсвязные, кольцевые списки. Очередь, стеки. Описание основных типов данных и функции для работы с ними. Листинг программы, пример ее работы.

    контрольная работа [290,6 K], добавлен 17.07.2012

  • Порядок проектирования программы, демонстрирующей принцип заполнения очереди и стека и принцип удаления элементов из очереди и стека. Определение класса и всех необходимых функций. Программа на языке С, описание возможностей, используемых для алгоритма.

    курсовая работа [254,3 K], добавлен 20.05.2013

  • Изучение условий поставленной задачи и используемых данных для разработки программы хранения информации о рейсах поезда. Описание разработанных функций, листинга, блок-схем алгоритмов и дерева функции. Рассмотрение сценария диалога данной программы.

    курсовая работа [532,7 K], добавлен 20.07.2014

  • Понятие стека как структуры данных, где элемент, занесенный первым, извлекается последним. Порядок добавления и удаления элементов списка. Реализация функций стека. Использование стека в алгоритме быстрой сортировки. Основные требования к элементам стека.

    презентация [591,2 K], добавлен 22.10.2013

  • Создание стека как линейного списка. Использование аналогичного ссылочного типа для организации очереди. Циклически связанный список. Построение сложных структур в динамической памяти. Бинарные (двоичные) деревья. Экран результата и контрольные расчеты.

    лабораторная работа [398,9 K], добавлен 14.06.2009

  • Использование класса статических массивов структур и базы данных "ODER" при создании программы на языке С++. Основные формы выдачи результатов. Технические и программные средства. Тесты для проверки работоспособности алгоритма создания программы.

    курсовая работа [1,1 M], добавлен 17.03.2015

  • Технические различия между операционными системами UNIX и Linux. Архитектура аппаратного обеспечения и ядро ОС. Поддержка файловой системы. Доступность приложений. Системное администрирование. Разработка программы на языке Си, реализующей алгоритм стека.

    курсовая работа [1,0 M], добавлен 28.05.2015

  • Разработка программы для решения инженерных задач с использованием функций, процедур и сложных типов данных, в том числе динамических массивов и объединений. Интерфейс ввода/вывода. Схемы алгоритмов отдельных подзадач. Технические требования к программе.

    курсовая работа [60,7 K], добавлен 26.11.2012

  • Разработка класса "очередь с приоритетами" на языке С++ с использованием объектно-ориентированного проектирования. Построение алгоритмов обработки очереди, методов вставки, удаления, вывода на экран элементов. Анализ вариантов реализации очередей.

    курсовая работа [398,6 K], добавлен 28.05.2016

  • Анализ эффективности методов сортировки данных в языке Turbo Pascal. Разработка эскизного и технического проекта программы. Сортировка без и с использованием дополнительной памяти, за исключением небольшого стека (массива). Сортировка связанных списков.

    курсовая работа [359,0 K], добавлен 23.05.2012

  • Создание программы для вычисления значения функции на основе определённой формулы. Уточнение структуры входных и выходных данных и определение ассемблерного формата их представления. Разработка алгоритмов для реализации работы программного обеспечения.

    курсовая работа [240,6 K], добавлен 17.06.2013

  • Основные понятия объектно-ориентированного программирования, особенности описания функций и классов. Разработка программы для работы с универсальной очередью установленного типа, добавления и удаления ее элементов и вывода содержимого очереди на экран.

    курсовая работа [187,2 K], добавлен 27.08.2012

  • Разработка структуры базы данных для хранения дипломных проектов в среде объектно-ориентированного программирования Python. Создание внешнего вида окон ввода-вывода информации, технологии переходов. Листинг программы с пояснениями; направления улучшения.

    курсовая работа [3,1 M], добавлен 27.02.2015

  • Общая характеристика объектно-ориентированного подхода в программировании, его основные свойства и принципы. Разработка программы для автоматизация деятельности кафе на основе объектно-ориентированного подхода, проектирования и реализации схемы данных.

    курсовая работа [1,2 M], добавлен 22.01.2012

  • Разработка программы "Игроки КХЛ 2012-2013" на языке С++ с использованием классов списков структур для обработки данных. Описание глобальных переменных, разработанных функций. Главное меню программы. Чтение данных из файла, их просмотр и сохранение.

    курсовая работа [2,2 M], добавлен 17.03.2016

  • Создание базы данных предоставляемых услуг и персонала агентств по организации концертов и праздников, отбор и вывод данных, связанных с культурно-досуговыми мероприятиями. Разработка алгоритма и реализация программы на языке программирования С++.

    курсовая работа [262,5 K], добавлен 16.01.2014

  • Особенности организации передачи данных в компьютерной сети. Эталонная модель взаимодействия открытых систем. Методы передачи данных на нижнем уровне, доступа к передающей среде. Анализ протоколов передачи данных нижнего уровня на примере стека TCP/IP.

    курсовая работа [1,0 M], добавлен 07.08.2011

  • Рассмотрение правил записи, способов ввода и вывода, использования функций обработки символьных данных в Pascal. Описание алгоритмизации и программирования файловых структур данных, проектирования структуры файла. Ознакомление с работой данных массива.

    курсовая работа [336,2 K], добавлен 27.06.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.