КАТЕГОРИИ: Архитектура-(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) |
В указатель stl помещается число new item
Адрес 2024 Адрес 2026 Блок памяти ММ........................................ мь!-*............. new item=2024 info=1200 nest=*s next=NULL Рис. 1.22 Шаг 7. Строкой программы 's = new item; где newitem 1.23). 2024, указателю stl присваивается значение адреса стека (рис.
□ .............. п stl=2024 Рис. 1.23 Для иллюстрации работы программы построим таблицу (табл. 2.6). Таблица 2.6 Изменение значений переменных в процессе работы програмы
Графическое представление работы программы представлено на рис. 1.24. Функция pop. Параметрами функции pop являются: a) s — указатель на указатель на структуру типа stack, б) указатель error на переменную типа int. Функция возвращает значение типа int (значение переменной oldinfo). Объект old item — указатель на старый элемент стека, которому присваивается значение указателя s. Рассмотрим пошагово работу функции pop. Шаг 1. Объявляется указатель на структуру типа stack (STACK *stl;). Шаг 2. С помощью функции push в стек помещаются числа 1200, 13, 125.
t stl........ push(&stl,1200) t .... >stl......... push(&stl,13) t .... ->stl push(&stl?125) Графическое представление стека
Рис. 1.24 Шаг З. Из стека выталкиваются элементы. Вызывается функция pop(&st\, Scerror). В качестве аргументов функции используются: адрес указателя st\ и адрес переменной error. Шаг 4. В теле функции pop объявляется указатель на структуру типа stack (имя указателя old item). Указателю old item присваивается значение указателя s: STACK *old_item = *s;, т. е. переменной old item присваивается адрес верхнего элемента стека (рис. 2.25).
Рис. 1.25 Шаг 5. Если значение *s (т. е. stX) не равно 0, то выполняются следующие действия: 1. Строка old info = old item -> info. Переменной old info присваивается значение верхнего элемента стека. 2. Строка *s = (*s) -> next. Указатель st\ передвигается на следующий узел. 3. С помощью строки free(old item); освобождается блок памяти, на который указывает old item (т.е. удаляется узел). На рис. 1.26 приведена иллюстрация работы функции pop на 5-м шаге.
Рис. 1.26 Шаг 6. Если значение указателя st\ равно 0, то переменной error присваивается значение 1. (Переменная error сигнализирует об ошибках при работе со стеком. Если error = 1, то произошла ошибка. Если error = 0, то ошибки нет.) Шаг 7. Функция возвращает значение переменной old info (т. е. функция возвращает число, вытолкнутое из стека). Если операция pop выполнена успешно, то error = 0, в противном случае error = 1. Функция реек. Параметрами данной функции являются: a) &st\ — адрес указателя st\ (т. е. адрес указателя, хранящего адрес стека), б) &error — адрес переменной error. Функция возвращает значение типа int. Если значение указателя stl не равно NULL, то переменной error присваивается значение 0, и функция возвращает значение верхнего элемента стека (значение переменной info). Если значение указателя st\ равно NULL, то переменной error присваивается значение 1, и функция возвращает значение 0. (Если в стеке не менее одного элемента, то error = 0; если в стеке нет элементов, то error = 1.)
Дата добавления: 2014-11-29; Просмотров: 461; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |