Студопедия — Программная реализация стека на основе массива
Студопедия Главная Случайная страница Обратная связь

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

Программная реализация стека на основе массива






Пример 14.1

Файл stack.h

#include < stdio.h>

#include < stdlib.h>

#include < malloc.h>

#include < conio.h>

////////////////////// Stack for char

typedef struct

{char *stack;

int head;

int size;

} STACK;

int Init(STACK* Stack, int nSize);

char Pop(STACK* Stack);

int Push(STACK* Stack, char cElement);

void Clear(STACK* Stack);

int GetSize(STACK* Stack);

void Free(STACK* Stack);

 

#include " stack.h"

////////////////////// Stack for char

///////////////////////////////////////////////

int Init(STACK* Stack, int nSize)

{Stack-> stack = (char*)malloc(nSize);

if (Stack-> stack == NULL) return -1;

Stack-> size = nSize;

Stack-> head = 0;

return nSize;

}

///////////////////////////////////////////////

char Pop(STACK* Stack)

{if (Stack-> head == 0) return 0;

return Stack-> stack[--Stack-> head]; }

///////////////////////////////////////////////

int Push(STACK* Stack, char cElement)

{if (Stack-> head == Stack-> size) return -1;

Stack-> stack[Stack-> head++] = cElement;

return 1;

}

///////////////////////////////////////////////

void Clear(STACK* Stack)

{Stack-> head = 0; }

///////////////////////////////////////////////

int GetSize(STACK* Stack)

{ return Stack-> head;

}

///////////////////////////////////////////////

void Free(STACK* Stack)

{ free(Stack-> stack); }

 

void main()

{STACK A;

Init(& A, 8);

Push(& A, 'J');

Push(& A, 'F');

char c = Pop(& A);

...

Варианты индивидуальных заданий

1. Создать стек для целых чисел. Максимальный размер стека вводится с экрана. Создать функции для ввода и вывода элементов стека. Добавить 6 элементов. Удалить и вывести на экран 2 элемента.

2. Создать стек для целых (положительных и отрицательных) чисел. Максимальный размер стека вводится с экрана. Создать функции для ввода и вывода элементов стека. Ввести с экрана 6 элементов. При вводе чисел в стек попадают только отрицательные элементы. Вывести все элементы стека.

3. Создать стек для целых чисел. Максимальный размер стека вводится с экрана. Создать функции для ввода, вывода и определения размера стека. Ввести с экрана 6 элементов. Удалить 2 элемента. Вывести размер стека.

4. Создать стек для целых (положительных и отрицательных) чисел. Максимальный размер стека вводится с экрана. Создать функции для ввода, вывода и определения размера стека. Вводить с экрана числа, причем в стек должны добавляться поочередно положительные и отрицательные числа.

5. Создать стек для символов. Максимальный размер стека вводится с экрана. Создать функции для ввода и вывода элементов стека. Ввести эталонный символ. Вводить символы с экрана в стек до встречи эталонного. Вывести все элементы стека.

6. Создать стек для символов. Максимальный размер стека вводится с экрана. Создать функции для ввода и вывода элементов стека. Добавить символы с экрана в стек. После добавления 5-го символа перед добавлением удалять элемент из стека.

7. Создать стек для символов. Максимальный размер стека вводится с экрана. Создать функции для ввода, вывода и определения размера стека. Ввести эталонный символ. Вводить символы с экрана в стек до встречи эталонного. Вывести размер стека.

8. Создать стек для символов. Максимальный размер стека вводится с экрана. Создать функции для ввода и вывода элементов стека. Добавлять символы с экрана в стек. В случае совпадения вводимого символа с вершиной стека вытолкнуть его и распечатать ее.

9. Создать стек для символов. Максимальный размер стека вводится с экрана. Создать функции для ввода, вывода и определения размера стека. Вводить символы с экрана в стек. В случае совпадения вводимого символа с вершиной стека вывести размер стека.

10. Создать два стека для символов. Максимальный размер стеков вводится с экрана. Создать функции для ввода и вывода элементов стека. Вводить символы с экрана в первый стек. В случае совпадения вводимого символа с вершиной стека вводить во второй стек.

11. Создать два стека для символов. Максимальный размер стеков вводится с экрана. Создать функции для ввода и вывода элементов стека. Вводить символы с экрана в стеки поочередно.

12. Создать стек для символов и стек для чисел. Максимальный размер стеков вводится с экрана. Создать функции для ввода и вывода элементов стека. Вводить символы с экрана. Символ попадает в первый стек, а его численное представление – во второй.

13. Создать два стека для символов. Максимальный размер стеков вводится с экрана. Создать функции для ввода и вывода элементов стека. Вводить символы с экрана. Прописные буквы попадают в первый стек, строчные – во второй, остальные символы пропускаются.

14. Создать два стека для символов. Максимальный размер стеков вводится с экрана. Создать функции для ввода и вывода элементов стека. Вводить символы с экрана. Прописные буквы преобразуются в строчные и попадают в первый стек, строчные преобразуются в прописные и попадают во второй, остальные символы пропускаются.

15. Создать стек для целых чисел. Максимальный размер стека вводится с экрана. Создать функции для ввода и вывода элементов стека. Вводить символы с экрана. Числовое представление символа попадает в стек.

16. Создать стек для целых чисел. Максимальный размер стека вводится с экрана. Создать функции для ввода и вывода элементов стека. Добавить 6 элементов. Удалить и вывести на экран 2 элемента. Задачу решить с использованием механизма указателей.

17. Создать стек для целых (положительных и отрицательных) чисел. Максимальный размер стека вводится с экрана. Создать функции для ввода и вывода элементов стека. Ввести 6 элементов. При вводе чисел в стек попадают только отрицательные элементы. Вывести все элементы стека. Задачу решить с использованием механизма указателей.

18. Создать стек для целых чисел. Максимальный размер стека вводится с экрана. Создать функции для ввода, вывода и определения размера стека. Ввести с экрана 6 элементов. Удалить 2 элемента. Вывести размер стека. Задачу решить с использованием механизма указателей.

19. Создать стек для целых (положительных и отрицательных) чисел. Максимальный размер стека вводится с экрана. Создать функции для ввода, вывода и определения размера стека. Вводить с экрана числа, причем в стек должны добавляться поочередно положительные и отрицательные числа. Задачу решить с использованием механизма указателей.

20. Создать стек для символов. Максимальный размер стека вводится с экрана. Создать функции для ввода и вывода элементов стека. Ввести эталонный символ. Вводить символы с экрана в стек до встречи эталонного. Вывести все элементы стека. Задачу решить с использованием механизма указателей.

21. Создать стек для символов. Максимальный размер стека вводится с экрана. Создать функции для ввода и вывода элементов стека. Добавить символы с экрана в стек. После добавления 5-го символа перед добавлением следуюшего удалять элемент из стека. Задачу решить с использованием механизма указателей.

22. Создать стек для символов. Максимальный размер стека вводится с экрана. Создать функции для ввода, вывода и определения размера стека. Ввести эталонный символ. Вводить символы с экрана в стек до встречи эталонного. Вывести размер стека. Задачу решить с использованием механизма указателей.

23. Создать стек для символов. Максимальный размер стека вводится с экрана. Создать функции для ввода и вывода элементов стека. Добавлять символы с экрана в стек. В случае совпадения вводимого символа с вершиной стека вытолкнуть его и распечатать ее. Задачу решить с использованием механизма указателей.

24. Создать стек для символов. Максимальный размер стека вводится с экрана. Создать функции для ввода, вывода и определения размера стека. Вводить символы с экрана в стек. В случае совпадения вводимого символа с вершиной стека вывести размер стека. Задачу решить с использованием механизма указателей.

25. Создать два стека для символов. Максимальный размер стеков вводится с экрана. Создать функции для ввода и вывода элементов стека. Вводить символы с экрана в первый стек. В случае совпадения вводимого символа с вершиной стека вводить во второй стек. Задачу решить с использованием механизма указателей.

26. Создать два стека для символов. Максимальный размер стеков вводится с экрана. Создать функции для ввода и вывода элементов стека. Вводить символы с экрана в стеки поочередно. Задачу решить с использованием механизма указателей.

27. Создать стек для символов и стек для чисел. Максимальный размер стеков вводится с экрана. Создать функции для ввода и вывода элементов стека. Вводить символы с экрана. Символ попадает в первый стек, а его численное представление – во второй. Задачу решить с использованием механизма указателей.

28. Создать два стека для символов. Максимальный размер стеков вводится с экрана. Создать функции для ввода и вывода элементов стека. Вводить символы с экрана. Прописные буквы попадают в первый стек, строчные – во второй, остальные символы пропускаются. Задачу решить с использованием механизма указателей.

29. Создать два стека для символов. Максимальный размер стеков вводится с экрана. Создать функции для ввода и вывода элементов стека. Вводить символы с экрана. Прописные буквы преобразуются в строчные и попадают в первый стек, строчные преобразуются в прописные и попадают во второй, остальные символы пропускаются. Задачу решить с использованием механизма указателей.

30. Создать стек для целых чисел. Максимальный размер стека вводится с экрана. Создать функции для ввода и вывода элементов стека. Вводить символы с экрана. Числовое представление символа попадает в стек. Задачу решить с использованием механизма указателей.

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

32. Создать текстовый файл, содержащий текстовую информацию. Используя стек, создать другой текстовый файл, в котором слова были бы записаны в обратном порядке.

33. Создать текстовый файл, содержащий некоторую информацию. Используя стек, создать другой текстовый файл, в котором строки были бы записаны в обратном порядке.

34. Создать текстовые файлы, содержащие один текстовую, а другой числовую информацию (количество слов и чисел должно быть одинаковым). Используя стек, создать другой текстовый файл, в котором числа и слова чередовались бы и были бы записаны в обратном порядке.

35. Создать текстовые файлы, содержащие один – текстовую, а другой – числовую информацию (количество слов и чисел должно быть одинаковым). Используя стек, создать другой текстовый файл, в котором числа и слова чередовались бы, а порядок чисел и слов был бы сохранен.

36. Создать текстовые файлы, содержащие один текстовую, а другой числовую информацию (количество слов и чисел может быть неодинаковым). Используя стек, создать другой текстовый файл, в котором числа и слова чередовались бы и были бы записаны в обратном порядке («лишние» числа или слова были бы записаны в конец файла).

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

38. В файле находится текст программы на Паскале. Используя стек, проверить правильность вложений операторных скобок (begin - end) в этой программе.

39. В файле записан текст, сбалансированный по круглым скобкам. Требуется для каждой пары соответствующих открывающей и закрывающей скобок напечатать номера их позиций в тексте, упорядочив пары номеров по возрастанию номеров позиций закрывающих скобок. Например, для текста a+(45-f(x)*(b-c)) надо напечатать 8 10, 12 16, 3 17.

40. В текстовом файле без ошибок записано логическое выражение следующего вида: < лог.выр>:: = true | false | < лог.выр> and < лог.выр> | < лог.выр> or < лог.выр>. Используя стек, вычислить значение этого выражения с учетом общепринятого приоритета операций.

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

42. Написать программу формирования стека, куда помещаются целые положительные числа, вводимые с клавиатуры (процесс ввода должен прекращаться, как только среди вводимых чисел появляется отрицательное число, после этого программа должна вывести на экран содержимое стека в том же порядке, в котором они были введены).

 







Дата добавления: 2014-11-10; просмотров: 1853. Нарушение авторских прав; Мы поможем в написании вашей работы!



Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

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

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

Тема: Изучение фенотипов местных сортов растений Цель: расширить знания о задачах современной селекции. Оборудование:пакетики семян различных сортов томатов...

Тема: Составление цепи питания Цель: расширить знания о биотических факторах среды. Оборудование:гербарные растения...

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

Потенциометрия. Потенциометрическое определение рН растворов Потенциометрия - это электрохимический метод иссле­дования и анализа веществ, основанный на зависимости равновесного электродного потенциала Е от активности (концентрации) определяемого вещества в исследуемом рас­творе...

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

Сущность, виды и функции маркетинга персонала Перснал-маркетинг является новым понятием. В мировой практике маркетинга и управления персоналом он выделился в отдельное направление лишь в начале 90-х гг.XX века...

Studopedia.info - Студопедия - 2014-2024 год . (0.011 сек.) русская версия | украинская версия