Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Все операции со стеком

Структура данных стека. Принципы выборки и записи в стек описаны выше.

// Работа со стеком. Проверка, пуст ли стек.

// Добавить в стек. Выбрать из стека.

// Стек полон

#include <stdio.h>

#include <dos.h>

#include <iostream.h>

#include <Process.H>

#include <Stdlib.H>

#include <conio.H>

#define max_size 200

char s[max_size]; //компоненты стека

int next=0; // позиция стека

int Empty()

{ return next==0; }

int Full()

{ return next==max_size; }

void Push()

{

if (next==max_size)

{

cout<<"Ошибка: стек полон"<<endl;}

else { next++;cout<<"Добавлен"<<endl;

cout<<"Что поместить в стек?"<<endl;

cin >> s[next-1];

}

}

void OUTst()

{

int i=0;

if (next==0) {

cout<<"Cтек пуст"<endl;

}

else { for(i=0;i<next;i++)

cout<<s[i]<<" "<<endl;

}

}

void Clear()

{ next=0; }

Poz()

{ return next; }

void Del()

{

int a;

if (next==0) cout<<"Ошибка: стек пуст"<<endl;

else {

next--;cout<<"Удален "<<endl;

}

}

void menu()

{

cout<<"0: распечатать стек"<<endl;

cout<<"1: добавить в стек"<<endl;

cout<<"2: удалить из стека"<<endl;

cout<<"3: узнать номер позиции в стеке"<<endl;

cout<<"4: узнать, пуст ли стек"<<endl;

cout<<"5: узнать, полон ли стек"<<endl;

cout<<"6: очистить стек"<<endl;

cout<<"7: выход"<<endl;

}

main()

{

char c;

clrscr();

textcolor(15);

do {

menu();

cin >> c;

clrscr();

switch (c) {

case '0':OUTst();getch();break;

case '1':Push();break;

case '2':Del();getch();break;

case '3':cout<<

"Hомер "<<Poz()<<endl;getch();break;

case '4':if (Empty()==1) cout<<"Пуст"<<endl;

else cout<<"Hе пуст"<<endl;getch();break;

case '5':if (Full()==1)cout<<"Полн"<<endl;

else cout<<"Hе полн"<<endl;getch();break;

case '6':Clear();cout<<

"Стек очищен"<<endl;getch();break;

case '7':exit(1);

}

delay(200);

}

while (c!=7);

return 0;

}

Подведем итог

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

При проектировании программы попытайтесь предвидеть, что может идти неправильно, и программируйте, исходя из этого. Используйте локализацию ошибок, чтобы контролировать действия в местах потенциальных затруднений, или, по крайней мере, предупреждать пользователя, что может возникнуть осложнение. Гораздо лучше дать пользователю еще одну возможность ввести данные, чем продолжать выполнять программу и прийти к аварийной ситуации. Если создается функция, сначала определите, как она будет взаимодействовать с вызывающей программой. Решите также, какая информация будет входить в нее, а какая - выходить. Какими должны быть аргументы? Если вы примете во внимание все эти параметры, то можете обратить внимание на работу самой функции. Используйте эти идеи, и ваша программа будет более надежной и менее подверженной аварийным ситуациям. Вы получите тело функции, которое сможете применять в других программах. Программирование в таком случае потребует меньше времени. Не забывайте о классах памяти. Переменные можно определять вне функции. В этом случае их называют внешними или глобальными и они доступны более чем для одной функции. Переменные, определенные внутри функции, являются локальными для нее, и не известны другим функциям. Если можно, используйте автоматическую разновидность локальных переменных. Они охраняют переменные одной функции от взаимодействия других функций.

 

<== предыдущая лекция | следующая лекция ==>
Структуры данных | Сущность планирования карьерного процесса. Этапы планирования карьеры. Конкретное определение жизненных и карьерных целей. Разработка личного карьерного плана. Закон Лехмана
Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 669; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.043 сек.