Студопедия

КАТЕГОРИИ:


Архитектура-(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 присваивается значение адреса стека (рис.


 


Адрес 65524


.............. п


stl=2024

Рис. 1.23

Для иллюстрации работы программы построим таблицу (табл. 2.6).

Таблица 2.6

Изменение значений переменных в процессе работы програмы

 

Адрес stl Старое значение stl Новое значение stl Адрес info Адрес next Значение info Значение next
  NULL         NULL
             
             

Графическое представление работы программы представлено на рис. 1.24.

Функция pop. Параметрами функции pop являются: a) s — указатель на указатель на структуру типа stack, б) указатель error на переменную типа int. Функция возвращает значение типа int (значение переменной oldinfo). Объект old item — указатель на старый элемент стека, которому присваивается значение указателя s.

Рассмотрим пошагово работу функции pop.

Шаг 1. Объявляется указатель на структуру типа stack (STACK *stl;).

Шаг 2. С помощью функции push в стек помещаются числа 1200, 13, 125.


 

 

 

info next   info next   info next
1200 | 0   13 | 2202 -* 125 | 2210
ч*  

t

stl........

push(&stl,1200)


t

.... >stl.........

push(&stl,13)


t

.... ->stl

push(&stl?125)


Графическое представление стека


 

 

 

St1   info next   info next  
      & <w     V
  ^       —^

 

info next
   

Рис. 1.24 Шаг З. Из стека выталкиваются элементы. Вызывается функция

pop(&st\, Scerror).

В качестве аргументов функции используются: адрес указателя st\ и адрес переменной error.

Шаг 4. В теле функции pop объявляется указатель на структуру типа stack (имя указателя old item). Указателю old item присваивается значение указателя s:

STACK *old_item = *s;,

т. е. переменной old item присваивается адрес верхнего элемента стека (рис. 2.25).

 

  Значение
Л "
1 1 1 М.............. 1X1...................... IXMXM 1 1 1
old_item=stl; SU ^° nest Верхний элемент стека

Рис. 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-м шаге.

 

 

 

 

 

 

ч * info пай   info next **--■,■ *ь info next  
>     а   NULL  
С * р   ^ ■ ^
X \ stl------------------ -------------- > "3 stl ^        
                   

Рис. 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; Просмотров: 436; Нарушение авторских прав?; Мы поможем в написании вашей работы!


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



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




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