stacks and queues - pepperdine universitystacks and queues chapter 7. design patterns for data...

39
Design Patterns for Data Structures Stacks and Queues Chapter 7

Upload: others

Post on 13-Jun-2020

16 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures

Stacks and Queues

Chapter 7

Page 2: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures

Demo StackA

Chapter 7

Page 3: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures

An array implementation of a stack

• A safe array of data elements: _data

• An integer pointer to the top of the stack: _top

StackA

Page 4: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures Figure 7.1��� &KDSWHU�� 6WDFNV�DQG�4XHXHV

�� 6WDFN$ WHPSODWH�FODVV 7!FODVV 6WDFN$ ^SULYDWH�

$UUD\7�7! BGDWD�LQW BWRS�

SXEOLF�6WDFN$�LQW FDS���� 3RVW� 7KLV VWDFN LV DOORFDWHG ZLWK D FDSDFLW\ RI FDS�� DQG LQLWLDOL]HG WR EH HPSW\�

ERRO LV(PSW\�� FRQVW��� 3RVW� WUXH LV UHWXUQHG LI WKLV VWDFN LV HPSW\��� RWKHUZLVH� IDOVH LV UHWXUQHG�

ERRO LV)XOO�� FRQVW��� 3RVW� WUXH LV UHWXUQHG LI WKLV VWDFN LV IXOO��� RWKHUZLVH� IDOVH LV UHWXUQHG�

7 SRS����� 3UH� 7KLV VWDFN LV QRW HPSW\��� 3RVW� 7KH WRS YDOXH LQ WKLV VWDFN LV UHPRYHG DQG UHWXUQHG�

YRLG SXVK�7 FRQVW YDO���� 3UH� 7KLV VWDFN LV QRW IXOO��� 3RVW� YDO LV VWRUHG RQ WRS RI WKLV VWDFN�

7 FRQVW WRS2I�� FRQVW��� 3UH� 7KLV VWDFN LV QRW HPSW\��� 3RVW� 7KH WRS YDOXH IURP WKLV VWDFN LV UHWXUQHG�

YRLG WR6WUHDP�RVWUHDP RV� FRQVW��� 3RVW� $OO WKH LWHPV RQ WKLV VWDFN IURP WRS WR ERWWRP�� DUH ZULWWHQ WR RV�

`�

)LJXUH ��� 6WDFN$�KSS� 6SHFLÀFDWLRQ�IRU�WKH 6WDFN$ GDWD�VWUXFWXUH� 7KH�OLVWLQJFRQWLQXHV�LQ�)LJXUH����

DERXW�WKH�VHOHFWHG�IRQW� KRZ�WKH�OHWWHUV�DUH�ZULWWHQ�DQG�DQ�LPSUHVVLRQ�RI�WKH�ORRN� 7KLVWH[W�VKRXOG�FRQWDLQ�DOO�OHWWHUV�RI�WKH�DOSKDEHW�DQG�LW�VKRXOG�EH�ZULWWHQ�LQ�RI�WKH�RULJLQDOODQJXDJH� 7KHUH�LV�QR�QHHG�IRU�VSHFLDO�FRQWHQW� EXW�WKH�OHQJWK�RI�ZRUGV�VKRXOG�PDWFK�WKHODQJXDJH�

7KLV�LV�WKH�VHFRQG�SDUDJUDSK� +HOOR� KHUH�LV�VRPH�WH[W�ZLWKRXW�D�PHDQLQJ� 7KLV�WH[WVKRXOG�VKRZ�ZKDW�D�SULQWHG�WH[W�ZLOO�ORRN�OLNH�DW�WKLV�SODFH� ,I�\RX�UHDG�WKLV�WH[W� \RX

&RS\ULJKW��� ����� 'XQJ�;��1JX\HQ�DQG�-��6WDQOH\�:DUIRUG 5HYLVHG� 2FWREHU��� ����

Page 5: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures Figure 7.1

��� &KDSWHU�� 6WDFNV�DQG�4XHXHV

�� 6WDFN$ WHPSODWH�FODVV 7!FODVV 6WDFN$ ^SULYDWH�

$UUD\7�7! BGDWD�LQW BWRS�

SXEOLF�6WDFN$�LQW FDS���� 3RVW� 7KLV VWDFN LV DOORFDWHG ZLWK D FDSDFLW\ RI FDS�� DQG LQLWLDOL]HG WR EH HPSW\�

ERRO LV(PSW\�� FRQVW��� 3RVW� WUXH LV UHWXUQHG LI WKLV VWDFN LV HPSW\��� RWKHUZLVH� IDOVH LV UHWXUQHG�

ERRO LV)XOO�� FRQVW��� 3RVW� WUXH LV UHWXUQHG LI WKLV VWDFN LV IXOO��� RWKHUZLVH� IDOVH LV UHWXUQHG�

7 SRS����� 3UH� 7KLV VWDFN LV QRW HPSW\��� 3RVW� 7KH WRS YDOXH LQ WKLV VWDFN LV UHPRYHG DQG UHWXUQHG�

YRLG SXVK�7 FRQVW YDO���� 3UH� 7KLV VWDFN LV QRW IXOO��� 3RVW� YDO LV VWRUHG RQ WRS RI WKLV VWDFN�

7 FRQVW WRS2I�� FRQVW��� 3UH� 7KLV VWDFN LV QRW HPSW\��� 3RVW� 7KH WRS YDOXH IURP WKLV VWDFN LV UHWXUQHG�

YRLG WR6WUHDP�RVWUHDP RV� FRQVW��� 3RVW� $OO WKH LWHPV RQ WKLV VWDFN IURP WRS WR ERWWRP�� DUH ZULWWHQ WR RV�

`�

)LJXUH ��� 6WDFN$�KSS� 6SHFLÀFDWLRQ�IRU�WKH 6WDFN$ GDWD�VWUXFWXUH� 7KH�OLVWLQJFRQWLQXHV�LQ�)LJXUH����

DERXW�WKH�VHOHFWHG�IRQW� KRZ�WKH�OHWWHUV�DUH�ZULWWHQ�DQG�DQ�LPSUHVVLRQ�RI�WKH�ORRN� 7KLVWH[W�VKRXOG�FRQWDLQ�DOO�OHWWHUV�RI�WKH�DOSKDEHW�DQG�LW�VKRXOG�EH�ZULWWHQ�LQ�RI�WKH�RULJLQDOODQJXDJH� 7KHUH�LV�QR�QHHG�IRU�VSHFLDO�FRQWHQW� EXW�WKH�OHQJWK�RI�ZRUGV�VKRXOG�PDWFK�WKHODQJXDJH�

7KLV�LV�WKH�VHFRQG�SDUDJUDSK� +HOOR� KHUH�LV�VRPH�WH[W�ZLWKRXW�D�PHDQLQJ� 7KLV�WH[WVKRXOG�VKRZ�ZKDW�D�SULQWHG�WH[W�ZLOO�ORRN�OLNH�DW�WKLV�SODFH� ,I�\RX�UHDG�WKLV�WH[W� \RX

&RS\ULJKW��� ����� 'XQJ�;��1JX\HQ�DQG�-��6WDQOH\�:DUIRUG 5HYLVHG� 2FWREHU��� ����

Page 6: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures

8.1 Array Implementations 245

_data[1][0] [3][2] [5][4]

(a)!Initial state. (b)!push(3.3);_top

_data[1][0] [3][2] [5][4]

3.3

_top(c)!push(5.5);

_data[1][0] [3][2] [5][4]

3.3

_top

5.5

(d)!push(4.4);

_data 3.3

_top

5.5 4.4

(d)!pop(); Returns 4.4.

_data 3.3

_top

5.5 4.4

(e)!push(1.1);

_data 3.3

_top

5.5 1.1

Figure 8.2 Action of push() and pop() with the StackA data structure.

“Huardest gefburn”? Kjift – not at all! A blind text like this gives you informationabout the selected font, how the letters are written and an impression of the look. Thistext should contain all letters of the alphabet and it should be written in of the originallanguage. There is no need for special content, but the length of words should match thelanguage.

This is the second paragraph. Hello, here is some text without a meaning. This textshould show what a printed text will look like at this place. If you read this text, youwill get no information. Really? Is there no information? Is there a difference betweenthis text and some nonsense like “Huardest gefburn”? Kjift – not at all! A blind textlike this gives you information about the selected font, how the letters are written and animpression of the look. This text should contain all letters of the alphabet and it shouldbe written in of the original language. There is no need for special content, but the lengthof words should match the language.

And after the second paragraph follows the third paragraph. Hello, here is some textwithout a meaning. This text should show what a printed text will look like at this place.If you read this text, you will get no information. Really? Is there no information? Isthere a difference between this text and some nonsense like “Huardest gefburn”? Kjift– not at all! A blind text like this gives you information about the selected font, how theletters are written and an impression of the look. This text should contain all letters ofthe alphabet and it should be written in of the original language. There is no need forspecial content, but the length of words should match the language.

Hello, here is some text without a meaning. This text should show what a printedtext will look like at this place. If you read this text, you will get no information. Really?Is there no information? Is there a difference between this text and some nonsense like“Huardest gefburn”? Kjift – not at all! A blind text like this gives you informationabout the selected font, how the letters are written and an impression of the look. Thistext should contain all letters of the alphabet and it should be written in of the originallanguage. There is no need for special content, but the length of words should match thelanguage.

Revised: June 29, 2016 Copyright ©: 1998, Dung X. Nguyen and J. Stanley Warford

Figure 7.2

Page 7: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures Figure 7.3��� &KDSWHU�� 6WDFNV�DQG�4XHXHV

�� &RQVWUXFWRU WHPSODWH�FODVV 7!6WDFN$�7!��6WDFN$�LQW FDS��

BGDWD�FDS��BWRS���� ^

`

�� LV(PSW\ WHPSODWH�FODVV 7!ERRO 6WDFN$�7!��LV(PSW\�� FRQVW ^

FHUU �� ¯LV(PSW\� ([HUFLVH IRU WKH VWXGHQW�¯ �� HQGO�WKURZ ���

`

�� LV)XOO WHPSODWH�FODVV 7!ERRO 6WDFN$�7!��LV)XOO�� FRQVW ^

FHUU �� ¯LV)XOO� ([HUFLVH IRU WKH VWXGHQW�¯ �� HQGO�WKURZ ���

`

�� SRS WHPSODWH�FODVV 7!7 6WDFN$�7!��SRS�� ^

LI �LV(PSW\��� ^FHUU �� ¯SRS SUHFRQGLWLRQ YLRODWHG� ¯

�� ¯&DQQRW SRS IURP DQ HPSW\ VWDFN�¯ �� HQGO�WKURZ ���

`FHUU �� ¯SRS� ([HUFLVH IRU WKH VWXGHQW�¯ �� HQGO�WKURZ ���

`

�� SXVK WHPSODWH�FODVV 7!YRLG 6WDFN$�7!��SXVK�7 FRQVW YDO� ^

FHUU �� ¯SXVK� ([HUFLVH IRU WKH VWXGHQW�¯ �� HQGO�WKURZ ���

`

)LJXUH ��� 6WDFN$�KSS �FRQWLQXHG�� 2SHUDWLRQV�IRU�WKH 6WDFN$ GDWD�VWUXFWXUH�7KH�OLVWLQJ�FRQWLQXHV�LQ�WKH�QH[W�ÀJXUH�

&RS\ULJKW��� ����� 'XQJ�;��1JX\HQ�DQG�-��6WDQOH\�:DUIRUG 5HYLVHG� 2FWREHU��� ����

Page 8: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures

��� &KDSWHU�� 6WDFNV�DQG�4XHXHV

�� &RQVWUXFWRU WHPSODWH�FODVV 7!6WDFN$�7!��6WDFN$�LQW FDS��

BGDWD�FDS��BWRS���� ^

`

�� LV(PSW\ WHPSODWH�FODVV 7!ERRO 6WDFN$�7!��LV(PSW\�� FRQVW ^

FHUU �� ¯LV(PSW\� ([HUFLVH IRU WKH VWXGHQW�¯ �� HQGO�WKURZ ���

`

�� LV)XOO WHPSODWH�FODVV 7!ERRO 6WDFN$�7!��LV)XOO�� FRQVW ^

FHUU �� ¯LV)XOO� ([HUFLVH IRU WKH VWXGHQW�¯ �� HQGO�WKURZ ���

`

�� SRS WHPSODWH�FODVV 7!7 6WDFN$�7!��SRS�� ^

LI �LV(PSW\��� ^FHUU �� ¯SRS SUHFRQGLWLRQ YLRODWHG� ¯

�� ¯&DQQRW SRS IURP DQ HPSW\ VWDFN�¯ �� HQGO�WKURZ ���

`FHUU �� ¯SRS� ([HUFLVH IRU WKH VWXGHQW�¯ �� HQGO�WKURZ ���

`

�� SXVK WHPSODWH�FODVV 7!YRLG 6WDFN$�7!��SXVK�7 FRQVW YDO� ^

FHUU �� ¯SXVK� ([HUFLVH IRU WKH VWXGHQW�¯ �� HQGO�WKURZ ���

`

)LJXUH ��� 6WDFN$�KSS �FRQWLQXHG�� 2SHUDWLRQV�IRU�WKH 6WDFN$ GDWD�VWUXFWXUH�7KH�OLVWLQJ�FRQWLQXHV�LQ�WKH�QH[W�ÀJXUH�

&RS\ULJKW��� ����� 'XQJ�;��1JX\HQ�DQG�-��6WDQOH\�:DUIRUG 5HYLVHG� 2FWREHU��� ����

Figure 7.3

Page 9: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures Figure 7.4

��� $UUD\�,PSOHPHQWDWLRQV ���

�� WRS2I WHPSODWH�FODVV 7!7 FRQVW 6WDFN$�7!��WRS2I�� FRQVW ^

LI �LV(PSW\��� ^FHUU �� ¯WRS2I SUHFRQGLWLRQ YLRODWHG� ¯

�� ¯$Q HPSW\ VWDFN KDV QR WRS�¯ �� HQGO�WKURZ ���

`FHUU �� ¯WRS2I� ([HUFLVH IRU WKH VWXGHQW�¯ �� HQGO�WKURZ ���

`

�� RSHUDWRU�� WHPSODWH�FODVV 7!RVWUHDP RSHUDWRU���RVWUHDP RV� 6WDFN$�7! FRQVW UKV� ^

UKV�WR6WUHDP�RV��UHWXUQ RV�

`

�� WR6WUHDP WHPSODWH�FODVV 7!YRLG 6WDFN$�7!��WR6WUHDP�RVWUHDP RV� FRQVW ^

RV �� ¯�¯�IRU �LQW L BWRS� L ! �� L��� ^

RV �� BGDWD>L@ �� ¯� ¯�`LI �BWRS ��� ^

RV �� ¯�¯�`HOVH ^

RV �� BGDWD>�@ �� ¯�¯�`

`

)LJXUH ��� 6WDFN$�KSS �FRQWLQXHG�� 2XWSXW�IRU�WKH 6WDFN$ GDWD�VWUXFWXUH� 7KLVFRQFOXGHV�WKH�OLVWLQJ�

ODQJXDJH�+HOOR� KHUH�LV�VRPH�WH[W�ZLWKRXW�D�PHDQLQJ� 7KLV�WH[W�VKRXOG�VKRZ�ZKDW�D�SULQWHG

WH[W�ZLOO�ORRN�OLNH�DW�WKLV�SODFH� ,I�\RX�UHDG�WKLV�WH[W� \RX�ZLOO�JHW�QR�LQIRUPDWLRQ� 5HDOO\",V�WKHUH�QR�LQIRUPDWLRQ" ,V�WKHUH�D�GLIIHUHQFH�EHWZHHQ�WKLV�WH[W�DQG�VRPH�QRQVHQVH�OLNH´+XDUGHVW�JHIEXUQµ" .MLIW�²�QRW�DW�DOO� $ EOLQG�WH[W�OLNH�WKLV�JLYHV�\RX�LQIRUPDWLRQDERXW�WKH�VHOHFWHG�IRQW� KRZ�WKH�OHWWHUV�DUH�ZULWWHQ�DQG�DQ�LPSUHVVLRQ�RI�WKH�ORRN� 7KLVWH[W�VKRXOG�FRQWDLQ�DOO�OHWWHUV�RI�WKH�DOSKDEHW�DQG�LW�VKRXOG�EH�ZULWWHQ�LQ�RI�WKH�RULJLQDOODQJXDJH� 7KHUH�LV�QR�QHHG�IRU�VSHFLDO�FRQWHQW� EXW�WKH�OHQJWK�RI�ZRUGV�VKRXOG�PDWFK�WKHODQJXDJH�

5HYLVHG� 2FWREHU��� ���� &RS\ULJKW��� ����� 'XQJ�;��1JX\HQ�DQG�-��6WDQOH\�:DUIRUG

Page 10: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures Figure 7.4

��� $UUD\�,PSOHPHQWDWLRQV ���

�� WRS2I WHPSODWH�FODVV 7!7 FRQVW 6WDFN$�7!��WRS2I�� FRQVW ^

LI �LV(PSW\��� ^FHUU �� ¯WRS2I SUHFRQGLWLRQ YLRODWHG� ¯

�� ¯$Q HPSW\ VWDFN KDV QR WRS�¯ �� HQGO�WKURZ ���

`FHUU �� ¯WRS2I� ([HUFLVH IRU WKH VWXGHQW�¯ �� HQGO�WKURZ ���

`

�� RSHUDWRU�� WHPSODWH�FODVV 7!RVWUHDP RSHUDWRU���RVWUHDP RV� 6WDFN$�7! FRQVW UKV� ^

UKV�WR6WUHDP�RV��UHWXUQ RV�

`

�� WR6WUHDP WHPSODWH�FODVV 7!YRLG 6WDFN$�7!��WR6WUHDP�RVWUHDP RV� FRQVW ^

RV �� ¯�¯�IRU �LQW L BWRS� L ! �� L��� ^

RV �� BGDWD>L@ �� ¯� ¯�`LI �BWRS ��� ^

RV �� ¯�¯�`HOVH ^

RV �� BGDWD>�@ �� ¯�¯�`

`

)LJXUH ��� 6WDFN$�KSS �FRQWLQXHG�� 2XWSXW�IRU�WKH 6WDFN$ GDWD�VWUXFWXUH� 7KLVFRQFOXGHV�WKH�OLVWLQJ�

ODQJXDJH�+HOOR� KHUH�LV�VRPH�WH[W�ZLWKRXW�D�PHDQLQJ� 7KLV�WH[W�VKRXOG�VKRZ�ZKDW�D�SULQWHG

WH[W�ZLOO�ORRN�OLNH�DW�WKLV�SODFH� ,I�\RX�UHDG�WKLV�WH[W� \RX�ZLOO�JHW�QR�LQIRUPDWLRQ� 5HDOO\",V�WKHUH�QR�LQIRUPDWLRQ" ,V�WKHUH�D�GLIIHUHQFH�EHWZHHQ�WKLV�WH[W�DQG�VRPH�QRQVHQVH�OLNH´+XDUGHVW�JHIEXUQµ" .MLIW�²�QRW�DW�DOO� $ EOLQG�WH[W�OLNH�WKLV�JLYHV�\RX�LQIRUPDWLRQDERXW�WKH�VHOHFWHG�IRQW� KRZ�WKH�OHWWHUV�DUH�ZULWWHQ�DQG�DQ�LPSUHVVLRQ�RI�WKH�ORRN� 7KLVWH[W�VKRXOG�FRQWDLQ�DOO�OHWWHUV�RI�WKH�DOSKDEHW�DQG�LW�VKRXOG�EH�ZULWWHQ�LQ�RI�WKH�RULJLQDOODQJXDJH� 7KHUH�LV�QR�QHHG�IRU�VSHFLDO�FRQWHQW� EXW�WKH�OHQJWK�RI�ZRUGV�VKRXOG�PDWFK�WKHODQJXDJH�

5HYLVHG� 2FWREHU��� ���� &RS\ULJKW��� ����� 'XQJ�;��1JX\HQ�DQG�-��6WDQOH\�:DUIRUG

Page 11: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures

Demo QueueA

Chapter 7

Page 12: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures

An array implementation of a queue

• A safe array of data elements: _data

• An integer pointer to the head of the queue: _head

• An integer pointer to the tail of the queue: _tail

• The queue is circular

QueueA

Page 13: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures Figure 7.5��� $UUD\�,PSOHPHQWDWLRQV ���

�� 4XHXH$ WHPSODWH�FODVV 7!FODVV 4XHXH$ ^SULYDWH�

$UUD\7�7! BGDWD�LQW BKHDG� BWDLO�

SXEOLF�4XHXH$�LQW FDS���� 3RVW� 7KLV TXHXH LV DOORFDWHG ZLWK D FDSDFLW\ RI FDS�� DQG LQLWLDOL]HG WR EH HPSW\�

7 GHTXHXH����� 3UH� 7KLV TXHXH LV QRW HPSW\��� 3RVW� 7KH KHDG YDOXH LQ WKLV TXHXH LV UHPRYHG DQG UHWXUQHG�

YRLG HQTXHXH�7 FRQVW YDO���� 3UH� 7KLV TXHXH LV QRW IXOO��� 3RVW� YDO LV VWRUHG DW WKH WDLO RI WKLV TXHXH�

7 FRQVW KHDG2I�� FRQVW��� 3UH� 7KLV TXHXH LV QRW HPSW\��� 3RVW� 7KH KHDG YDOXH IURP WKLV TXHXH LV UHWXUQHG�

ERRO LV(PSW\�� FRQVW��� 3RVW� WUXH LV UHWXUQHG LI WKLV TXHXH LV HPSW\��� RWKHUZLVH� IDOVH LV UHWXUQHG�

ERRO LV)XOO�� FRQVW��� 3RVW� WUXH LV UHWXUQHG LI WKLV TXHXH LV IXOO��� RWKHUZLVH� IDOVH LV UHWXUQHG�

YRLG WR6WUHDP�RVWUHDP RV� FRQVW��� 3RVW� $OO WKH LWHPV RQ WKLV TXHXH IURP WDLO WR KHDG�� DUH ZULWWHQ WR RV�

`�

)LJXUH ��� 4XHXH$�KSS� 6SHFLÀFDWLRQ�IRU�WKH 4XHXH$ GDWD�VWUXFWXUH� 7KH�OLVWLQJFRQWLQXHV�LQ�)LJXUH����

WH[W�VKRXOG�FRQWDLQ�DOO�OHWWHUV�RI�WKH�DOSKDEHW�DQG�LW�VKRXOG�EH�ZULWWHQ�LQ�RI�WKH�RULJLQDOODQJXDJH� 7KHUH�LV�QR�QHHG�IRU�VSHFLDO�FRQWHQW� EXW�WKH�OHQJWK�RI�ZRUGV�VKRXOG�PDWFK�WKHODQJXDJH�

+HOOR� KHUH�LV�VRPH�WH[W�ZLWKRXW�D�PHDQLQJ� 7KLV�WH[W�VKRXOG�VKRZ�ZKDW�D�SULQWHGWH[W�ZLOO�ORRN�OLNH�DW�WKLV�SODFH� ,I�\RX�UHDG�WKLV�WH[W� \RX�ZLOO�JHW�QR�LQIRUPDWLRQ� 5HDOO\",V�WKHUH�QR�LQIRUPDWLRQ" ,V�WKHUH�D�GLIIHUHQFH�EHWZHHQ�WKLV�WH[W�DQG�VRPH�QRQVHQVH�OLNH

5HYLVHG� 2FWREHU��� ���� &RS\ULJKW��� ����� 'XQJ�;��1JX\HQ�DQG�-��6WDQOH\�:DUIRUG

Page 14: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures Figure 7.5

��� $UUD\�,PSOHPHQWDWLRQV ���

�� 4XHXH$ WHPSODWH�FODVV 7!FODVV 4XHXH$ ^SULYDWH�

$UUD\7�7! BGDWD�LQW BKHDG� BWDLO�

SXEOLF�4XHXH$�LQW FDS���� 3RVW� 7KLV TXHXH LV DOORFDWHG ZLWK D FDSDFLW\ RI FDS�� DQG LQLWLDOL]HG WR EH HPSW\�

7 GHTXHXH����� 3UH� 7KLV TXHXH LV QRW HPSW\��� 3RVW� 7KH KHDG YDOXH LQ WKLV TXHXH LV UHPRYHG DQG UHWXUQHG�

YRLG HQTXHXH�7 FRQVW YDO���� 3UH� 7KLV TXHXH LV QRW IXOO��� 3RVW� YDO LV VWRUHG DW WKH WDLO RI WKLV TXHXH�

7 FRQVW KHDG2I�� FRQVW��� 3UH� 7KLV TXHXH LV QRW HPSW\��� 3RVW� 7KH KHDG YDOXH IURP WKLV TXHXH LV UHWXUQHG�

ERRO LV(PSW\�� FRQVW��� 3RVW� WUXH LV UHWXUQHG LI WKLV TXHXH LV HPSW\��� RWKHUZLVH� IDOVH LV UHWXUQHG�

ERRO LV)XOO�� FRQVW��� 3RVW� WUXH LV UHWXUQHG LI WKLV TXHXH LV IXOO��� RWKHUZLVH� IDOVH LV UHWXUQHG�

YRLG WR6WUHDP�RVWUHDP RV� FRQVW��� 3RVW� $OO WKH LWHPV RQ WKLV TXHXH IURP WDLO WR KHDG�� DUH ZULWWHQ WR RV�

`�

)LJXUH ��� 4XHXH$�KSS� 6SHFLÀFDWLRQ�IRU�WKH 4XHXH$ GDWD�VWUXFWXUH� 7KH�OLVWLQJFRQWLQXHV�LQ�)LJXUH����

WH[W�VKRXOG�FRQWDLQ�DOO�OHWWHUV�RI�WKH�DOSKDEHW�DQG�LW�VKRXOG�EH�ZULWWHQ�LQ�RI�WKH�RULJLQDOODQJXDJH� 7KHUH�LV�QR�QHHG�IRU�VSHFLDO�FRQWHQW� EXW�WKH�OHQJWK�RI�ZRUGV�VKRXOG�PDWFK�WKHODQJXDJH�

+HOOR� KHUH�LV�VRPH�WH[W�ZLWKRXW�D�PHDQLQJ� 7KLV�WH[W�VKRXOG�VKRZ�ZKDW�D�SULQWHGWH[W�ZLOO�ORRN�OLNH�DW�WKLV�SODFH� ,I�\RX�UHDG�WKLV�WH[W� \RX�ZLOO�JHW�QR�LQIRUPDWLRQ� 5HDOO\",V�WKHUH�QR�LQIRUPDWLRQ" ,V�WKHUH�D�GLIIHUHQFH�EHWZHHQ�WKLV�WH[W�DQG�VRPH�QRQVHQVH�OLNH

5HYLVHG� 2FWREHU��� ���� &RS\ULJKW��� ����� 'XQJ�;��1JX\HQ�DQG�-��6WDQOH\�:DUIRUG

Page 15: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures

8.1 Array Implementations 249

_data[1][0] [3][2] [5][4]

(a)!Initial state. (b)!enqueue(3.3);

_head

_data[1][0] [3][2] [5][4]

3.3

_tail

(c)!enqueue(5.5);

_data[1][0] [3][2] [5][4]

3.3 5.5

_tail_head _tail_head

(d)!enqueue(4.4);

_data 3.3 5.5

_tail_head

4.4

(e)!dequeue(); Returns 3.3.

_data 5.5

_tail_head

4.4

(f)!enqueue(9.9);

_data 5.5

_tail_head

4.4 9.9

(g)!enqueue(1.1);

_data 5.5

_tail_head

4.4 9.9 1.1

(h)!dequeue(); Returns 5.5.

_data 1.1

_tail_head

4.4 9.9

(i)!dequeue(); Returns 4.4.

_data

_tail_head

9.9 1.1

(j)!enqueue(7.7);

_data 1.1

_tail _head

7.79.9 _data 1.1

_tail _head

7.79.9

(k)!enqueue(6.6);

6.6 _data 1.1

_tail _head

7.79.9

(l)!enqueue(2.2); The queue is full.

6.6 2.2

Figure 8.6 Action of enqueue() and dequeue() with the QueueA data structure.

“Huardest gefburn”? Kjift – not at all! A blind text like this gives you informationabout the selected font, how the letters are written and an impression of the look. Thistext should contain all letters of the alphabet and it should be written in of the originallanguage. There is no need for special content, but the length of words should match thelanguage.

Hello, here is some text without a meaning. This text should show what a printedtext will look like at this place. If you read this text, you will get no information. Really?Is there no information? Is there a difference between this text and some nonsense like“Huardest gefburn”? Kjift – not at all! A blind text like this gives you informationabout the selected font, how the letters are written and an impression of the look. Thistext should contain all letters of the alphabet and it should be written in of the originallanguage. There is no need for special content, but the length of words should match the

Revised: June 29, 2016 Copyright ©: 1998, Dung X. Nguyen and J. Stanley Warford

Figure 7.6

Page 16: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures

8.1 Array Implementations 249

_data[1][0] [3][2] [5][4]

(a)!Initial state. (b)!enqueue(3.3);

_head

_data[1][0] [3][2] [5][4]

3.3

_tail

(c)!enqueue(5.5);

_data[1][0] [3][2] [5][4]

3.3 5.5

_tail_head _tail_head

(d)!enqueue(4.4);

_data 3.3 5.5

_tail_head

4.4

(e)!dequeue(); Returns 3.3.

_data 5.5

_tail_head

4.4

(f)!enqueue(9.9);

_data 5.5

_tail_head

4.4 9.9

(g)!enqueue(1.1);

_data 5.5

_tail_head

4.4 9.9 1.1

(h)!dequeue(); Returns 5.5.

_data 1.1

_tail_head

4.4 9.9

(i)!dequeue(); Returns 4.4.

_data

_tail_head

9.9 1.1

(j)!enqueue(7.7);

_data 1.1

_tail _head

7.79.9 _data 1.1

_tail _head

7.79.9

(k)!enqueue(6.6);

6.6 _data 1.1

_tail _head

7.79.9

(l)!enqueue(2.2); The queue is full.

6.6 2.2

Figure 8.6 Action of enqueue() and dequeue() with the QueueA data structure.

“Huardest gefburn”? Kjift – not at all! A blind text like this gives you informationabout the selected font, how the letters are written and an impression of the look. Thistext should contain all letters of the alphabet and it should be written in of the originallanguage. There is no need for special content, but the length of words should match thelanguage.

Hello, here is some text without a meaning. This text should show what a printedtext will look like at this place. If you read this text, you will get no information. Really?Is there no information? Is there a difference between this text and some nonsense like“Huardest gefburn”? Kjift – not at all! A blind text like this gives you informationabout the selected font, how the letters are written and an impression of the look. Thistext should contain all letters of the alphabet and it should be written in of the originallanguage. There is no need for special content, but the length of words should match the

Revised: June 29, 2016 Copyright ©: 1998, Dung X. Nguyen and J. Stanley Warford

Figure 7.6

Page 17: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures Figure 7.7��� 7KH�$GDSWHU�3DWWHUQ ���

�� &RQVWUXFWRU WHPSODWH�FODVV 7!4XHXH$�7!��4XHXH$�LQW FDS� �

BGDWD�FDS � ���BKHDG����BWDLO��� ^

`

�� RSHUDWRU�� WHPSODWH�FODVV 7!RVWUHDP RSHUDWRU���RVWUHDP RV� 4XHXH$�7! FRQVW UKV� ^

UKV�WR6WUHDP�RV��UHWXUQ RV�

`

�� WR6WUHDP WHPSODWH�FODVV 7!YRLG 4XHXH$�7!��WR6WUHDP�RVWUHDP RV� FRQVW ^

FHUU �� ¯WR6WUHDP� ([HUFLVH IRU WKH VWXGHQW�¯ �� HQGO�WKURZ ���

`

)LJXUH ��� 4XHXH$�KSS �FRQWLQXHG�� &RQVWUXFWRU�DQG�RXWSXW�IRU�WKH 4XHXH$ GDWDVWUXFWXUH� 2SHUDWLRQV�WKDW�DUH�H[HUFLVHV�IRU�WKH�VWXGHQW�DUH�QRW�VKRZQ� 7KLV�FRQFOXGHVWKH�OLVWLQJ�

ODQJXDJH�+HOOR� KHUH�LV�VRPH�WH[W�ZLWKRXW�D�PHDQLQJ� 7KLV�WH[W�VKRXOG�VKRZ�ZKDW�D�SULQWHG

WH[W�ZLOO�ORRN�OLNH�DW�WKLV�SODFH� ,I�\RX�UHDG�WKLV�WH[W� \RX�ZLOO�JHW�QR�LQIRUPDWLRQ� 5HDOO\",V�WKHUH�QR�LQIRUPDWLRQ" ,V�WKHUH�D�GLIIHUHQFH�EHWZHHQ�WKLV�WH[W�DQG�VRPH�QRQVHQVH�OLNH´+XDUGHVW�JHIEXUQµ" .MLIW�²�QRW�DW�DOO� $ EOLQG�WH[W�OLNH�WKLV�JLYHV�\RX�LQIRUPDWLRQDERXW�WKH�VHOHFWHG�IRQW� KRZ�WKH�OHWWHUV�DUH�ZULWWHQ�DQG�DQ�LPSUHVVLRQ�RI�WKH�ORRN� 7KLVWH[W�VKRXOG�FRQWDLQ�DOO�OHWWHUV�RI�WKH�DOSKDEHW�DQG�LW�VKRXOG�EH�ZULWWHQ�LQ�RI�WKH�RULJLQDOODQJXDJH� 7KHUH�LV�QR�QHHG�IRU�VSHFLDO�FRQWHQW� EXW�WKH�OHQJWK�RI�ZRUGV�VKRXOG�PDWFK�WKHODQJXDJH�

��� 7KH�$GDSWHU�3DWWHUQ7KH�DGDSWHU�SDWWHUQ�LV�DOVR�NQRZQ�DV�D�ZUDSSHU�

+HOOR� KHUH�LV�VRPH�WH[W�ZLWKRXW�D�PHDQLQJ� 7KLV�WH[W�VKRXOG�VKRZ�ZKDW�D�SULQWHGWH[W�ZLOO�ORRN�OLNH�DW�WKLV�SODFH� ,I�\RX�UHDG�WKLV�WH[W� \RX�ZLOO�JHW�QR�LQIRUPDWLRQ� 5HDOO\",V�WKHUH�QR�LQIRUPDWLRQ" ,V�WKHUH�D�GLIIHUHQFH�EHWZHHQ�WKLV�WH[W�DQG�VRPH�QRQVHQVH�OLNH´+XDUGHVW�JHIEXUQµ" .MLIW�²�QRW�DW�DOO� $ EOLQG�WH[W�OLNH�WKLV�JLYHV�\RX�LQIRUPDWLRQDERXW�WKH�VHOHFWHG�IRQW� KRZ�WKH�OHWWHUV�DUH�ZULWWHQ�DQG�DQ�LPSUHVVLRQ�RI�WKH�ORRN� 7KLVWH[W�VKRXOG�FRQWDLQ�DOO�OHWWHUV�RI�WKH�DOSKDEHW�DQG�LW�VKRXOG�EH�ZULWWHQ�LQ�RI�WKH�RULJLQDO

5HYLVHG� 2FWREHU��� ���� &RS\ULJKW��� ����� 'XQJ�;��1JX\HQ�DQG�-��6WDQOH\�:DUIRUG

Page 18: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures

The Adapter Design PatternAlso known as the Wrapper Pattern

Chapter 7

Adapter allows classes with incompatible interfaces to work together by wrapping its own interface around that of an already existing class.

Page 19: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures

A linked list implementation of the stack

Chapter 7

The stack wraps its own interface around that of the already existing linked list.

Page 20: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures Figure 7.8��� &KDSWHU�� 6WDFNV�DQG�4XHXHV

�� 6WDFN/ WHPSODWH�FODVV 7!FODVV 6WDFN/ ^SULYDWH�

/LVW/�7! BOLVW/�

SXEOLF�6WDFN/����� 7KLV VWDFN LV LQLWLDOL]HG WR EH HPSW\�

a6WDFN/����� 3RVW� 7KLV VWDFN LV GHDOORFDWHG�

ERRO LV(PSW\�� FRQVW ��� 3RVW� WUXH LV UHWXUQHG LI WKLV VWDFN LV HPSW\��� RWKHUZLVH� IDOVH LV UHWXUQHG�

7 SRS����� 3UH� 7KLV VWDFN LV QRW HPSW\��� 3RVW� 7KH WRS YDOXH LQ WKLV VWDFN LV UHPRYHG DQG UHWXUQHG�

YRLG SXVK�7 FRQVW YDO���� 3RVW� YDO LV VWRUHG RQ WRS RI WKLV VWDFN�

7 FRQVW WRS2I�� FRQVW��� 3UH� 7KLV VWDFN LV QRW HPSW\��� 3RVW� 7KH WRS YDOXH IURP WKLV VWDFN LV UHWXUQHG�

YRLG WR6WUHDP�RVWUHDP RV� FRQVW��� 3RVW� $OO WKH LWHPV RQ WKLV VWDFN IURP WRS WR ERWWRP�� DUH ZULWWHQ WR RV�

`�

)LJXUH ��� 6WDFN/�KSS� 6SHFLÀFDWLRQ�IRU�WKH 6WDFN/ GDWD�VWUXFWXUH� 7KH�OLVWLQJFRQWLQXHV�LQ�)LJXUH������

ODQJXDJH� 7KHUH�LV�QR�QHHG�IRU�VSHFLDO�FRQWHQW� EXW�WKH�OHQJWK�RI�ZRUGV�VKRXOG�PDWFK�WKHODQJXDJH�

7KH�OLVW�LPSOHPHQWDWLRQ�RI�D�VWDFN+HOOR� KHUH�LV�VRPH�WH[W�ZLWKRXW�D�PHDQLQJ� 7KLV�WH[W�VKRXOG�VKRZ�ZKDW�D�SULQWHG�WH[WZLOO�ORRN�OLNH�DW�WKLV�SODFH� ,I�\RX�UHDG�WKLV�WH[W� \RX�ZLOO�JHW�QR�LQIRUPDWLRQ� 5HDOO\",V�WKHUH�QR�LQIRUPDWLRQ" ,V�WKHUH�D�GLIIHUHQFH�EHWZHHQ�WKLV�WH[W�DQG�VRPH�QRQVHQVH�OLNH´+XDUGHVW�JHIEXUQµ" .MLIW�²�QRW�DW�DOO� $ EOLQG�WH[W�OLNH�WKLV�JLYHV�\RX�LQIRUPDWLRQDERXW�WKH�VHOHFWHG�IRQW� KRZ�WKH�OHWWHUV�DUH�ZULWWHQ�DQG�DQ�LPSUHVVLRQ�RI�WKH�ORRN� 7KLV

&RS\ULJKW��� ����� 'XQJ�;��1JX\HQ�DQG�-��6WDQOH\�:DUIRUG 5HYLVHG� 2FWREHU��� ����

Page 21: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures Figure 7.8

��� &KDSWHU�� 6WDFNV�DQG�4XHXHV

�� 6WDFN/ WHPSODWH�FODVV 7!FODVV 6WDFN/ ^SULYDWH�

/LVW/�7! BOLVW/�

SXEOLF�6WDFN/����� 7KLV VWDFN LV LQLWLDOL]HG WR EH HPSW\�

a6WDFN/����� 3RVW� 7KLV VWDFN LV GHDOORFDWHG�

ERRO LV(PSW\�� FRQVW ��� 3RVW� WUXH LV UHWXUQHG LI WKLV VWDFN LV HPSW\��� RWKHUZLVH� IDOVH LV UHWXUQHG�

7 SRS����� 3UH� 7KLV VWDFN LV QRW HPSW\��� 3RVW� 7KH WRS YDOXH LQ WKLV VWDFN LV UHPRYHG DQG UHWXUQHG�

YRLG SXVK�7 FRQVW YDO���� 3RVW� YDO LV VWRUHG RQ WRS RI WKLV VWDFN�

7 FRQVW WRS2I�� FRQVW��� 3UH� 7KLV VWDFN LV QRW HPSW\��� 3RVW� 7KH WRS YDOXH IURP WKLV VWDFN LV UHWXUQHG�

YRLG WR6WUHDP�RVWUHDP RV� FRQVW��� 3RVW� $OO WKH LWHPV RQ WKLV VWDFN IURP WRS WR ERWWRP�� DUH ZULWWHQ WR RV�

`�

)LJXUH ��� 6WDFN/�KSS� 6SHFLÀFDWLRQ�IRU�WKH 6WDFN/ GDWD�VWUXFWXUH� 7KH�OLVWLQJFRQWLQXHV�LQ�)LJXUH������

ODQJXDJH� 7KHUH�LV�QR�QHHG�IRU�VSHFLDO�FRQWHQW� EXW�WKH�OHQJWK�RI�ZRUGV�VKRXOG�PDWFK�WKHODQJXDJH�

7KH�OLVW�LPSOHPHQWDWLRQ�RI�D�VWDFN+HOOR� KHUH�LV�VRPH�WH[W�ZLWKRXW�D�PHDQLQJ� 7KLV�WH[W�VKRXOG�VKRZ�ZKDW�D�SULQWHG�WH[WZLOO�ORRN�OLNH�DW�WKLV�SODFH� ,I�\RX�UHDG�WKLV�WH[W� \RX�ZLOO�JHW�QR�LQIRUPDWLRQ� 5HDOO\",V�WKHUH�QR�LQIRUPDWLRQ" ,V�WKHUH�D�GLIIHUHQFH�EHWZHHQ�WKLV�WH[W�DQG�VRPH�QRQVHQVH�OLNH´+XDUGHVW�JHIEXUQµ" .MLIW�²�QRW�DW�DOO� $ EOLQG�WH[W�OLNH�WKLV�JLYHV�\RX�LQIRUPDWLRQDERXW�WKH�VHOHFWHG�IRQW� KRZ�WKH�OHWWHUV�DUH�ZULWWHQ�DQG�DQ�LPSUHVVLRQ�RI�WKH�ORRN� 7KLV

&RS\ULJKW��� ����� 'XQJ�;��1JX\HQ�DQG�-��6WDQOH\�:DUIRUG 5HYLVHG� 2FWREHU��� ����

Page 22: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures Figure 7.9252 Chapter 8 Stacks and Queues

ListL

– ListL(rhs: ListL<T> const &)+ ListL( )+ ~ListL( )+ append(data: T const &)+ clear( )+ concat(suffix: ListL<T> &)+ contains(data: T const &) const: bool– copyHead(rhs: ListL<T> const &): LNode<T> *+ equals(rhs: ListL<T> const &) const: bool+ first( ) const: T const &+ isEmpty( ) const: bool + length( ) const: int+ max( ) const: T const &+ operator=(rhs: ListL<T> const &): ListL<T> &+ prepend(data: T const &)+ remFirst( ): T+ remLast( ): T+ remove(data: T const &)+ reverse( )+ setFirst(data: T const &)+ toStream(os: ostream &) const+ unZip( ): ListL<T> *+ zip(other: ListL<T> &)

T

– _head: LNode<T> * LNode– _data: T– _next: LNode *– LNode(data: T)

T

StackL

+ StackL( )+ ~StackL( )+ isEmpty( ) const: bool + push(val: T const &)+ pop( ): T+ topOf( ) const: T const &+ toStream(os: ostream &) const

T

– _listL: ListL<T> *

Figure 8.9 The adapter design pattern for the StackL data structure.

language. There is no need for special content, but the length of words should match thelanguage.

The list implementation of a stack

Hello, here is some text without a meaning. This text should show what a printed textwill look like at this place. If you read this text, you will get no information. Really?Is there no information? Is there a difference between this text and some nonsense like“Huardest gefburn”? Kjift – not at all! A blind text like this gives you informationabout the selected font, how the letters are written and an impression of the look. This

Copyright ©: 1998, Dung X. Nguyen and J. Stanley Warford Revised: June 14, 2016

Page 23: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures Figure 7.10��� &KDSWHU�� 6WDFNV�DQG�4XHXHV

�� &RQVWUXFWRU WHPSODWH�FODVV 7!6WDFN/�7!��6WDFN/�� ^

BOLVW/ QHZ /LVW/�7!���`

�� 'HVWUXFWRU WHPSODWH�FODVV 7!6WDFN/�7!��a6WDFN/�� ^

GHOHWH BOLVW/�`

�� LV(PSW\ WHPSODWH�FODVV 7!ERRO 6WDFN/�7!��LV(PSW\�� FRQVW ^

UHWXUQ BOLVW/�!LV(PSW\���`

�� SXVK WHPSODWH�FODVV 7!YRLG 6WDFN/�7!��SXVK�FRQVW 7 YDO� ^

BOLVW/�!SUHSHQG�YDO��`

�� RSHUDWRU�� WHPSODWH�FODVV 7!RVWUHDP RSHUDWRU���RVWUHDP RV� 6WDFN/�7! FRQVW UKV� ^

UKV�WR6WUHDP�RV��UHWXUQ RV�

`

�� WR6WUHDP WHPSODWH�FODVV 7!YRLG 6WDFN/�7!��WR6WUHDP�RVWUHDP RV� FRQVW ^

BOLVW/�!WR6WUHDP�RV��`

)LJXUH ���� 6WDFN/�KSS �FRQWLQXHG�� 2SHUDWLRQV�IRU�WKH 6WDFN/ GDWD�VWUXFWXUH�2SHUDWLRQV�WKDW�DUH�H[HUFLVHV�IRU�WKH�VWXGHQW�DUH�QRW�VKRZQ� 7KLV�FRQFOXGHV�WKH�OLVWLQJ�

ODQJXDJH�+HOOR� KHUH�LV�VRPH�WH[W�ZLWKRXW�D�PHDQLQJ� 7KLV�WH[W�VKRXOG�VKRZ�ZKDW�D�SULQWHG

WH[W�ZLOO�ORRN�OLNH�DW�WKLV�SODFH� ,I�\RX�UHDG�WKLV�WH[W� \RX�ZLOO�JHW�QR�LQIRUPDWLRQ� 5HDOO\",V�WKHUH�QR�LQIRUPDWLRQ" ,V�WKHUH�D�GLIIHUHQFH�EHWZHHQ�WKLV�WH[W�DQG�VRPH�QRQVHQVH�OLNH´+XDUGHVW�JHIEXUQµ" .MLIW�²�QRW�DW�DOO� $ EOLQG�WH[W�OLNH�WKLV�JLYHV�\RX�LQIRUPDWLRQDERXW�WKH�VHOHFWHG�IRQW� KRZ�WKH�OHWWHUV�DUH�ZULWWHQ�DQG�DQ�LPSUHVVLRQ�RI�WKH�ORRN� 7KLV

&RS\ULJKW��� ����� 'XQJ�;��1JX\HQ�DQG�-��6WDQOH\�:DUIRUG 5HYLVHG� 2FWREHU��� ����

Page 24: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures Figure 7.10

��� &KDSWHU�� 6WDFNV�DQG�4XHXHV

�� &RQVWUXFWRU WHPSODWH�FODVV 7!6WDFN/�7!��6WDFN/�� ^

BOLVW/ QHZ /LVW/�7!���`

�� 'HVWUXFWRU WHPSODWH�FODVV 7!6WDFN/�7!��a6WDFN/�� ^

GHOHWH BOLVW/�`

�� LV(PSW\ WHPSODWH�FODVV 7!ERRO 6WDFN/�7!��LV(PSW\�� FRQVW ^

UHWXUQ BOLVW/�!LV(PSW\���`

�� SXVK WHPSODWH�FODVV 7!YRLG 6WDFN/�7!��SXVK�FRQVW 7 YDO� ^

BOLVW/�!SUHSHQG�YDO��`

�� RSHUDWRU�� WHPSODWH�FODVV 7!RVWUHDP RSHUDWRU���RVWUHDP RV� 6WDFN/�7! FRQVW UKV� ^

UKV�WR6WUHDP�RV��UHWXUQ RV�

`

�� WR6WUHDP WHPSODWH�FODVV 7!YRLG 6WDFN/�7!��WR6WUHDP�RVWUHDP RV� FRQVW ^

BOLVW/�!WR6WUHDP�RV��`

)LJXUH ���� 6WDFN/�KSS �FRQWLQXHG�� 2SHUDWLRQV�IRU�WKH 6WDFN/ GDWD�VWUXFWXUH�2SHUDWLRQV�WKDW�DUH�H[HUFLVHV�IRU�WKH�VWXGHQW�DUH�QRW�VKRZQ� 7KLV�FRQFOXGHV�WKH�OLVWLQJ�

ODQJXDJH�+HOOR� KHUH�LV�VRPH�WH[W�ZLWKRXW�D�PHDQLQJ� 7KLV�WH[W�VKRXOG�VKRZ�ZKDW�D�SULQWHG

WH[W�ZLOO�ORRN�OLNH�DW�WKLV�SODFH� ,I�\RX�UHDG�WKLV�WH[W� \RX�ZLOO�JHW�QR�LQIRUPDWLRQ� 5HDOO\",V�WKHUH�QR�LQIRUPDWLRQ" ,V�WKHUH�D�GLIIHUHQFH�EHWZHHQ�WKLV�WH[W�DQG�VRPH�QRQVHQVH�OLNH´+XDUGHVW�JHIEXUQµ" .MLIW�²�QRW�DW�DOO� $ EOLQG�WH[W�OLNH�WKLV�JLYHV�\RX�LQIRUPDWLRQDERXW�WKH�VHOHFWHG�IRQW� KRZ�WKH�OHWWHUV�DUH�ZULWWHQ�DQG�DQ�LPSUHVVLRQ�RI�WKH�ORRN� 7KLV

&RS\ULJKW��� ����� 'XQJ�;��1JX\HQ�DQG�-��6WDQOH\�:DUIRUG 5HYLVHG� 2FWREHU��� ����

Page 25: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures

A linked list implementation of the queue

Chapter 7

The queue wraps its own interface around that of the already existing linked list.

Page 26: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures Figure 7.11��� 7KH�$GDSWHU�3DWWHUQ ���

�� 4XHXH/ WHPSODWH�FODVV 7!FODVV 4XHXH/ ^SULYDWH�

�� $WWULEXWH LV H[HUFLVH IRU WKH VWXGHQW�

SXEOLF�4XHXH/����� 7KLV TXHXH LV DOORFDWHG DQG LQLWLDOL]HG WR EH HPSW\�

a4XHXH/����� 3RVW� 7KLV TXHXH LV GHDOORFDWHG�

7 GHTXHXH����� 3UH� 7KLV TXHXH LV QRW HPSW\��� 3RVW� 7KH KHDG YDOXH LQ WKLV TXHXH LV UHPRYHG DQG UHWXUQHG�

YRLG HQTXHXH�7 FRQVW YDO���� 3RVW� YDO LV VWRUHG DW WKH WDLO RI WKLV TXHXH�

7 FRQVW KHDG2I�� FRQVW��� 3UH� 7KLV TXHXH LV QRW HPSW\��� 3RVW� 7KH KHDG YDOXH IURP WKLV TXHXH LV UHWXUQHG�

ERRO LV(PSW\�� FRQVW��� 3RVW� WUXH LV UHWXUQHG LI WKLV TXHXH LV HPSW\��� RWKHUZLVH� IDOVH LV UHWXUQHG�

YRLG WR6WUHDP�RVWUHDP RV� FRQVW��� 3RVW� $OO WKH LWHPV RQ WKLV TXHXH IURP WDLO WR KHDG�� DUH ZULWWHQ WR RV�

`�

)LJXUH ���� 4XHXH/�KSS� 6SHFLÀFDWLRQ�IRU�WKH 4XHXH/ GDWD�VWUXFWXUH� 7KH�LPSOH�PHQWDWLRQ�LV�DQ�H[HUFLVH�IRU�WKH�VWXGHQW�DQG�LV�QRW�VKRZQ�

WH[W�VKRXOG�FRQWDLQ�DOO�OHWWHUV�RI�WKH�DOSKDEHW�DQG�LW�VKRXOG�EH�ZULWWHQ�LQ�RI�WKH�RULJLQDOODQJXDJH� 7KHUH�LV�QR�QHHG�IRU�VSHFLDO�FRQWHQW� EXW�WKH�OHQJWK�RI�ZRUGV�VKRXOG�PDWFK�WKHODQJXDJH�

+HOOR� KHUH�LV�VRPH�WH[W�ZLWKRXW�D�PHDQLQJ� 7KLV�WH[W�VKRXOG�VKRZ�ZKDW�D�SULQWHGWH[W�ZLOO�ORRN�OLNH�DW�WKLV�SODFH� ,I�\RX�UHDG�WKLV�WH[W� \RX�ZLOO�JHW�QR�LQIRUPDWLRQ� 5HDOO\",V�WKHUH�QR�LQIRUPDWLRQ" ,V�WKHUH�D�GLIIHUHQFH�EHWZHHQ�WKLV�WH[W�DQG�VRPH�QRQVHQVH�OLNH´+XDUGHVW�JHIEXUQµ" .MLIW�²�QRW�DW�DOO� $ EOLQG�WH[W�OLNH�WKLV�JLYHV�\RX�LQIRUPDWLRQDERXW�WKH�VHOHFWHG�IRQW� KRZ�WKH�OHWWHUV�DUH�ZULWWHQ�DQG�DQ�LPSUHVVLRQ�RI�WKH�ORRN� 7KLVWH[W�VKRXOG�FRQWDLQ�DOO�OHWWHUV�RI�WKH�DOSKDEHW�DQG�LW�VKRXOG�EH�ZULWWHQ�LQ�RI�WKH�RULJLQDOODQJXDJH� 7KHUH�LV�QR�QHHG�IRU�VSHFLDO�FRQWHQW� EXW�WKH�OHQJWK�RI�ZRUGV�VKRXOG�PDWFK�WKH

5HYLVHG� 2FWREHU��� ���� &RS\ULJKW��� ����� 'XQJ�;��1JX\HQ�DQG�-��6WDQOH\�:DUIRUG

Page 27: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures Figure 7.11

��� 7KH�$GDSWHU�3DWWHUQ ���

�� 4XHXH/ WHPSODWH�FODVV 7!FODVV 4XHXH/ ^SULYDWH�

�� $WWULEXWH LV H[HUFLVH IRU WKH VWXGHQW�

SXEOLF�4XHXH/����� 7KLV TXHXH LV DOORFDWHG DQG LQLWLDOL]HG WR EH HPSW\�

a4XHXH/����� 3RVW� 7KLV TXHXH LV GHDOORFDWHG�

7 GHTXHXH����� 3UH� 7KLV TXHXH LV QRW HPSW\��� 3RVW� 7KH KHDG YDOXH LQ WKLV TXHXH LV UHPRYHG DQG UHWXUQHG�

YRLG HQTXHXH�7 FRQVW YDO���� 3RVW� YDO LV VWRUHG DW WKH WDLO RI WKLV TXHXH�

7 FRQVW KHDG2I�� FRQVW��� 3UH� 7KLV TXHXH LV QRW HPSW\��� 3RVW� 7KH KHDG YDOXH IURP WKLV TXHXH LV UHWXUQHG�

ERRO LV(PSW\�� FRQVW��� 3RVW� WUXH LV UHWXUQHG LI WKLV TXHXH LV HPSW\��� RWKHUZLVH� IDOVH LV UHWXUQHG�

YRLG WR6WUHDP�RVWUHDP RV� FRQVW��� 3RVW� $OO WKH LWHPV RQ WKLV TXHXH IURP WDLO WR KHDG�� DUH ZULWWHQ WR RV�

`�

)LJXUH ���� 4XHXH/�KSS� 6SHFLÀFDWLRQ�IRU�WKH 4XHXH/ GDWD�VWUXFWXUH� 7KH�LPSOH�PHQWDWLRQ�LV�DQ�H[HUFLVH�IRU�WKH�VWXGHQW�DQG�LV�QRW�VKRZQ�

WH[W�VKRXOG�FRQWDLQ�DOO�OHWWHUV�RI�WKH�DOSKDEHW�DQG�LW�VKRXOG�EH�ZULWWHQ�LQ�RI�WKH�RULJLQDOODQJXDJH� 7KHUH�LV�QR�QHHG�IRU�VSHFLDO�FRQWHQW� EXW�WKH�OHQJWK�RI�ZRUGV�VKRXOG�PDWFK�WKHODQJXDJH�

+HOOR� KHUH�LV�VRPH�WH[W�ZLWKRXW�D�PHDQLQJ� 7KLV�WH[W�VKRXOG�VKRZ�ZKDW�D�SULQWHGWH[W�ZLOO�ORRN�OLNH�DW�WKLV�SODFH� ,I�\RX�UHDG�WKLV�WH[W� \RX�ZLOO�JHW�QR�LQIRUPDWLRQ� 5HDOO\",V�WKHUH�QR�LQIRUPDWLRQ" ,V�WKHUH�D�GLIIHUHQFH�EHWZHHQ�WKLV�WH[W�DQG�VRPH�QRQVHQVH�OLNH´+XDUGHVW�JHIEXUQµ" .MLIW�²�QRW�DW�DOO� $ EOLQG�WH[W�OLNH�WKLV�JLYHV�\RX�LQIRUPDWLRQDERXW�WKH�VHOHFWHG�IRQW� KRZ�WKH�OHWWHUV�DUH�ZULWWHQ�DQG�DQ�LPSUHVVLRQ�RI�WKH�ORRN� 7KLVWH[W�VKRXOG�FRQWDLQ�DOO�OHWWHUV�RI�WKH�DOSKDEHW�DQG�LW�VKRXOG�EH�ZULWWHQ�LQ�RI�WKH�RULJLQDOODQJXDJH� 7KHUH�LV�QR�QHHG�IRU�VSHFLDO�FRQWHQW� EXW�WKH�OHQJWK�RI�ZRUGV�VKRXOG�PDWFK�WKH

5HYLVHG� 2FWREHU��� ���� &RS\ULJKW��� ����� 'XQJ�;��1JX\HQ�DQG�-��6WDQOH\�:DUIRUG

Page 28: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures

The Priority Queue

A heap implementation of the priority queue

Chapter 7

Page 29: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures Figure 7.12��� &KDSWHU�� 6WDFNV�DQG�4XHXHV

�� 3ULRULW\4 WHPSODWH�FODVV 7!FODVV 3ULRULW\4 ^SULYDWH�

$UUD\7�7! BGDWD�LQW BKL,QGH[�

SXEOLF�3ULRULW\4�LQW FDS���� 3RVW� 7KLV SULRULW\ TXHXH LV DOORFDWHG ZLWK D FDSDFLW\ RI FDS�� DQG LQLWLDOL]HG WR EH HPSW\�

7 H[WUDFW0D[����� 3UH� 7KLV SULRULW\ TXHXH LV QRW HPSW\��� 3RVW� 7KH PD[LPXP YDOXH LQ WKLV SULRULW\ TXHXH LV UHPRYHG�� DQG UHWXUQHG�

LQW KHDS6L]H�� FRQVW��� 3RVW� 7KH VL]H RI WKLV SULRULW\ TXHXH LV UHWXUQHG�

YRLG LQFUHDVH.H\�LQW L� 7 FRQVW NH\���� 3UH� 7KLV SULRULW\ TXHXH LV QRW HPSW\� � � L � KHDS6L]H����� DQG NH\ LV DW OHDVW DV ODUJH DV WKH NH\ DW LQGH[ L��� 3RVW� 7KH YDOXH RI WKH HOHPHQW DW LQGH[ L LV LQFUHDVHG WR NH\�

YRLG LQVHUW�7 FRQVW YDO���� 3UH� 7KLV SULRULW\ TXHXH LV QRW IXOO��� 3RVW� YDO LV VWRUHG LQ WKLV SULRULW\ TXHXH�

ERRO LV(PSW\�� FRQVW��� 3RVW� WUXH LV UHWXUQHG LI WKLV SULRULW\ TXHXH LV IXOO��� RWKHUZLVH� IDOVH LV UHWXUQHG�

ERRO LV)XOO�� FRQVW��� 3RVW� WUXH LV UHWXUQHG LI WKLV SULRULW\ TXHXH LV IXOO��� RWKHUZLVH� IDOVH LV UHWXUQHG�

7 FRQVW PD[LPXP�� FRQVW��� 3UH� 7KLV SULRULW\ TXHXH LV QRW HPSW\��� 3RVW� 7KH PD[LPXP YDOXH IURP WKLV SULRULW\ TXHXH LV UHWXUQHG�

YRLG WR6WUHDP�RVWUHDP RV� FRQVW��� 3RVW� (DFK LWHP RQ WKLV SULRULW\ TXHXH SUHIL[HG ZLWK LWV LQGH[�� LV ZULWWHQ WR RV�

`�

)LJXUH ���� 3ULRULW\4�KSS� 6SHFLÀFDWLRQ�IRU�WKH 3ULRULW\4 GDWD�VWUXFWXUH�

&RS\ULJKW��� ����� 'XQJ�;��1JX\HQ�DQG�-��6WDQOH\�:DUIRUG 5HYLVHG� 2FWREHU��� ����

Page 30: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures Figure 7.12

��� &KDSWHU�� 6WDFNV�DQG�4XHXHV

�� 3ULRULW\4 WHPSODWH�FODVV 7!FODVV 3ULRULW\4 ^SULYDWH�

$UUD\7�7! BGDWD�LQW BKL,QGH[�

SXEOLF�3ULRULW\4�LQW FDS���� 3RVW� 7KLV SULRULW\ TXHXH LV DOORFDWHG ZLWK D FDSDFLW\ RI FDS�� DQG LQLWLDOL]HG WR EH HPSW\�

7 H[WUDFW0D[����� 3UH� 7KLV SULRULW\ TXHXH LV QRW HPSW\��� 3RVW� 7KH PD[LPXP YDOXH LQ WKLV SULRULW\ TXHXH LV UHPRYHG�� DQG UHWXUQHG�

LQW KHDS6L]H�� FRQVW��� 3RVW� 7KH VL]H RI WKLV SULRULW\ TXHXH LV UHWXUQHG�

YRLG LQFUHDVH.H\�LQW L� 7 FRQVW NH\���� 3UH� 7KLV SULRULW\ TXHXH LV QRW HPSW\� � � L � KHDS6L]H����� DQG NH\ LV DW OHDVW DV ODUJH DV WKH NH\ DW LQGH[ L��� 3RVW� 7KH YDOXH RI WKH HOHPHQW DW LQGH[ L LV LQFUHDVHG WR NH\�

YRLG LQVHUW�7 FRQVW YDO���� 3UH� 7KLV SULRULW\ TXHXH LV QRW IXOO��� 3RVW� YDO LV VWRUHG LQ WKLV SULRULW\ TXHXH�

ERRO LV(PSW\�� FRQVW��� 3RVW� WUXH LV UHWXUQHG LI WKLV SULRULW\ TXHXH LV IXOO��� RWKHUZLVH� IDOVH LV UHWXUQHG�

ERRO LV)XOO�� FRQVW��� 3RVW� WUXH LV UHWXUQHG LI WKLV SULRULW\ TXHXH LV IXOO��� RWKHUZLVH� IDOVH LV UHWXUQHG�

7 FRQVW PD[LPXP�� FRQVW��� 3UH� 7KLV SULRULW\ TXHXH LV QRW HPSW\��� 3RVW� 7KH PD[LPXP YDOXH IURP WKLV SULRULW\ TXHXH LV UHWXUQHG�

YRLG WR6WUHDP�RVWUHDP RV� FRQVW��� 3RVW� (DFK LWHP RQ WKLV SULRULW\ TXHXH SUHIL[HG ZLWK LWV LQGH[�� LV ZULWWHQ WR RV�

`�

)LJXUH ���� 3ULRULW\4�KSS� 6SHFLÀFDWLRQ�IRU�WKH 3ULRULW\4 GDWD�VWUXFWXUH�

&RS\ULJKW��� ����� 'XQJ�;��1JX\HQ�DQG�-��6WDQOH\�:DUIRUG 5HYLVHG� 2FWREHU��� ����

Page 31: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures Figure 7.12

��� &KDSWHU�� 6WDFNV�DQG�4XHXHV

�� 3ULRULW\4 WHPSODWH�FODVV 7!FODVV 3ULRULW\4 ^SULYDWH�

$UUD\7�7! BGDWD�LQW BKL,QGH[�

SXEOLF�3ULRULW\4�LQW FDS���� 3RVW� 7KLV SULRULW\ TXHXH LV DOORFDWHG ZLWK D FDSDFLW\ RI FDS�� DQG LQLWLDOL]HG WR EH HPSW\�

7 H[WUDFW0D[����� 3UH� 7KLV SULRULW\ TXHXH LV QRW HPSW\��� 3RVW� 7KH PD[LPXP YDOXH LQ WKLV SULRULW\ TXHXH LV UHPRYHG�� DQG UHWXUQHG�

LQW KHDS6L]H�� FRQVW��� 3RVW� 7KH VL]H RI WKLV SULRULW\ TXHXH LV UHWXUQHG�

YRLG LQFUHDVH.H\�LQW L� 7 FRQVW NH\���� 3UH� 7KLV SULRULW\ TXHXH LV QRW HPSW\� � � L � KHDS6L]H����� DQG NH\ LV DW OHDVW DV ODUJH DV WKH NH\ DW LQGH[ L��� 3RVW� 7KH YDOXH RI WKH HOHPHQW DW LQGH[ L LV LQFUHDVHG WR NH\�

YRLG LQVHUW�7 FRQVW YDO���� 3UH� 7KLV SULRULW\ TXHXH LV QRW IXOO��� 3RVW� YDO LV VWRUHG LQ WKLV SULRULW\ TXHXH�

ERRO LV(PSW\�� FRQVW��� 3RVW� WUXH LV UHWXUQHG LI WKLV SULRULW\ TXHXH LV IXOO��� RWKHUZLVH� IDOVH LV UHWXUQHG�

ERRO LV)XOO�� FRQVW��� 3RVW� WUXH LV UHWXUQHG LI WKLV SULRULW\ TXHXH LV IXOO��� RWKHUZLVH� IDOVH LV UHWXUQHG�

7 FRQVW PD[LPXP�� FRQVW��� 3UH� 7KLV SULRULW\ TXHXH LV QRW HPSW\��� 3RVW� 7KH PD[LPXP YDOXH IURP WKLV SULRULW\ TXHXH LV UHWXUQHG�

YRLG WR6WUHDP�RVWUHDP RV� FRQVW��� 3RVW� (DFK LWHP RQ WKLV SULRULW\ TXHXH SUHIL[HG ZLWK LWV LQGH[�� LV ZULWWHQ WR RV�

`�

)LJXUH ���� 3ULRULW\4�KSS� 6SHFLÀFDWLRQ�IRU�WKH 3ULRULW\4 GDWD�VWUXFWXUH�

&RS\ULJKW��� ����� 'XQJ�;��1JX\HQ�DQG�-��6WDQOH\�:DUIRUG 5HYLVHG� 2FWREHU��� ����

Page 32: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures8.3 The Priority Queue 259

55

45

40 60 20

90

(a)!siftUp(a, 0, 8);

[1]

[0]

temp

40

55

45

40 60 20

90

i

(b)!temp = a[i];temp

40

30 3060

[3] [4]

[10][7] [8] [9]

55

45

40 20

90

(c) !Move parent of 60 down.temp

40

3060

45

55

4540 20

90

(d) !Move parent of 45 down.temp

40

3060

55

55

4540 20

90

i

(e) !a[i] = temp;temp

40

3060

60

Figure 8.13 Action of siftUp() with the PriorityQ data structure.

about the selected font, how the letters are written and an impression of the look. Thistext should contain all letters of the alphabet and it should be written in of the originallanguage. There is no need for special content, but the length of words should match thelanguage.

Hello, here is some text without a meaning. This text should show what a printedtext will look like at this place. If you read this text, you will get no information. Really?

Revised: June 29, 2016 Copyright ©: 1998, Dung X. Nguyen and J. Stanley Warford

Figure 7.13

Page 33: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures

8.3 The Priority Queue 259

55

45

40 60 20

90

(a)!siftUp(a, 0, 8);

[1]

[0]

temp

40

55

45

40 60 20

90

i

(b)!temp = a[i];temp

40

30 3060

[3] [4]

[10][7] [8] [9]

55

45

40 20

90

(c) !Move parent of 60 down.temp

40

3060

45

55

4540 20

90

(d) !Move parent of 45 down.temp

40

3060

55

55

4540 20

90

i

(e) !a[i] = temp;temp

40

3060

60

Figure 8.13 Action of siftUp() with the PriorityQ data structure.

about the selected font, how the letters are written and an impression of the look. Thistext should contain all letters of the alphabet and it should be written in of the originallanguage. There is no need for special content, but the length of words should match thelanguage.

Hello, here is some text without a meaning. This text should show what a printedtext will look like at this place. If you read this text, you will get no information. Really?

Revised: June 29, 2016 Copyright ©: 1998, Dung X. Nguyen and J. Stanley Warford

Figure 7.13

Page 34: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures Figure 7.14

��� 7KH�3ULRULW\�4XHXH ���

�� VLIW8S WHPSODWH�FODVV 7!YRLG VLIW8S�$6HT�7! D� LQW OR� LQW L� ^

�� 3UH� PD[+HDS�D>OR��L � �@���� 3RVW� PD[+HDS�D>OR��L@��7 WHPS D>L@�LQW SDUHQW �L � OR � �� � ��ZKLOH �OR � L D>SDUHQW@ � WHPS� ^

FHUU �� ¯VLIW8S� ([HUFLVH IRU WKH VWXGHQW�¯ �� HQGO�WKURZ ���

`D>L@ WHPS�

`

)LJXUH ���� +HDSLILHU�KSS LQ� WKH $6RUWHU SURMHFW� ,PSOHPHQWDWLRQ�RI� WKHVLIW8S�� IXQFWLRQ�

´+XDUGHVW�JHIEXUQµ" .MLIW�²�QRW�DW�DOO� $ EOLQG�WH[W�OLNH�WKLV�JLYHV�\RX�LQIRUPDWLRQDERXW�WKH�VHOHFWHG�IRQW� KRZ�WKH�OHWWHUV�DUH�ZULWWHQ�DQG�DQ�LPSUHVVLRQ�RI�WKH�ORRN� 7KLVWH[W�VKRXOG�FRQWDLQ�DOO�OHWWHUV�RI�WKH�DOSKDEHW�DQG�LW�VKRXOG�EH�ZULWWHQ�LQ�RI�WKH�RULJLQDOODQJXDJH� 7KHUH�LV�QR�QHHG�IRU�VSHFLDO�FRQWHQW� EXW�WKH�OHQJWK�RI�ZRUGV�VKRXOG�PDWFK�WKHODQJXDJH�

+HOOR� KHUH�LV�VRPH�WH[W�ZLWKRXW�D�PHDQLQJ� 7KLV�WH[W�VKRXOG�VKRZ�ZKDW�D�SULQWHGWH[W�ZLOO�ORRN�OLNH�DW�WKLV�SODFH� ,I�\RX�UHDG�WKLV�WH[W� \RX�ZLOO�JHW�QR�LQIRUPDWLRQ� 5HDOO\",V�WKHUH�QR�LQIRUPDWLRQ" ,V�WKHUH�D�GLIIHUHQFH�EHWZHHQ�WKLV�WH[W�DQG�VRPH�QRQVHQVH�OLNH´+XDUGHVW�JHIEXUQµ" .MLIW�²�QRW�DW�DOO� $ EOLQG�WH[W�OLNH�WKLV�JLYHV�\RX�LQIRUPDWLRQDERXW�WKH�VHOHFWHG�IRQW� KRZ�WKH�OHWWHUV�DUH�ZULWWHQ�DQG�DQ�LPSUHVVLRQ�RI�WKH�ORRN� 7KLVWH[W�VKRXOG�FRQWDLQ�DOO�OHWWHUV�RI�WKH�DOSKDEHW�DQG�LW�VKRXOG�EH�ZULWWHQ�LQ�RI�WKH�RULJLQDOODQJXDJH� 7KHUH�LV�QR�QHHG�IRU�VSHFLDO�FRQWHQW� EXW�WKH�OHQJWK�RI�ZRUGV�VKRXOG�PDWFK�WKHODQJXDJH�

+HOOR� KHUH�LV�VRPH�WH[W�ZLWKRXW�D�PHDQLQJ� 7KLV�WH[W�VKRXOG�VKRZ�ZKDW�D�SULQWHGWH[W�ZLOO�ORRN�OLNH�DW�WKLV�SODFH� ,I�\RX�UHDG�WKLV�WH[W� \RX�ZLOO�JHW�QR�LQIRUPDWLRQ� 5HDOO\",V�WKHUH�QR�LQIRUPDWLRQ" ,V�WKHUH�D�GLIIHUHQFH�EHWZHHQ�WKLV�WH[W�DQG�VRPH�QRQVHQVH�OLNH´+XDUGHVW�JHIEXUQµ" .MLIW�²�QRW�DW�DOO� $ EOLQG�WH[W�OLNH�WKLV�JLYHV�\RX�LQIRUPDWLRQDERXW�WKH�VHOHFWHG�IRQW� KRZ�WKH�OHWWHUV�DUH�ZULWWHQ�DQG�DQ�LPSUHVVLRQ�RI�WKH�ORRN� 7KLVWH[W�VKRXOG�FRQWDLQ�DOO�OHWWHUV�RI�WKH�DOSKDEHW�DQG�LW�VKRXOG�EH�ZULWWHQ�LQ�RI�WKH�RULJLQDOODQJXDJH� 7KHUH�LV�QR�QHHG�IRU�VSHFLDO�FRQWHQW� EXW�WKH�OHQJWK�RI�ZRUGV�VKRXOG�PDWFK�WKHODQJXDJH�

([HUFLVHV�²� :KDW�LV�WKH�ZRUVW�FDVH�DV\PSWRWLF�ERXQGΘ(n)� ZKHUH n LV�WKH�QXPEHU�RI�HOHPHQWV�VWRUHG

LQ�WKH�GDWD�VWUXFWXUH� IRU�HDFK�RI�WKH�IROORZLQJ�RSHUDWLRQV"(a) SXVK�� IRU�WKH 6WDFN$ GDWD�VWUXFWXUH�(b) SRS�� IRU�WKH 6WDFN$ GDWD�VWUXFWXUH�

5HYLVHG� 2FWREHU��� ���� &RS\ULJKW��� ����� 'XQJ�;��1JX\HQ�DQG�-��6WDQOH\�:DUIRUG

Page 35: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures Figure 7.15��� &KDSWHU�� 6WDFNV�DQG�4XHXHV

�� &RQVWUXFWRU WHPSODWH�FODVV 7!3ULRULW\4�7!��3ULRULW\4�LQW FDS� �

BGDWD�FDS��BKL,QGH[���� ^

`

�� KHDS6L]H WHPSODWH�FODVV 7!LQW 3ULRULW\4�7!��KHDS6L]H�� FRQVW ^

UHWXUQ BKL,QGH[ � ��`

�� LQVHUW WHPSODWH�FODVV 7!YRLG 3ULRULW\4�7!��LQVHUW�7 FRQVW YDO� ^

LI �LV)XOO��� ^FHUU �� ¯LQVHUW SUHFRQGLWLRQ YLRODWHG� ¯

�� ¯&DQQRW LQVHUW LQWR D IXOO SULRULW\ TXHXH�¯ �� HQGO�WKURZ ���

`BGDWD>��BKL,QGH[@ YDO�VLIW8S�BGDWD� �� BKL,QGH[��

`

�� LV(PSW\ WHPSODWH�FODVV 7!ERRO 3ULRULW\4�7!��LV(PSW\�� FRQVW ^

UHWXUQ BKL,QGH[ ���`

�� PD[LPXP WHPSODWH�FODVV 7!7 FRQVW 3ULRULW\4�7!��PD[LPXP�� FRQVW ^

LI �LV(PSW\��� ^FHUU �� ¯PD[LPXP SUHFRQGLWLRQ YLRODWHG� ¯

�� ¯$Q HPSW\ SULRULW\ TXHXH KDV QR PD[LPXP�¯ �� HQGO�WKURZ ���

`UHWXUQ BGDWD>�@�

`

)LJXUH ���� 3ULRULW\4�KSS �FRQWLQXHG�� 2SHUDWLRQV�IRU�WKH 3ULRULW\4 GDWDVWUXFWXUH� 2SHUDWLRQV�WKDW�DUH�H[HUFLVHV�IRU�WKH�VWXGHQW�DUH�QRW�VKRZQ� 7KH�OLVWLQJ�FRQ�WLQXHV�LQ�WKH�QH[W�ÀJXUH�

&RS\ULJKW��� ����� 'XQJ�;��1JX\HQ�DQG�-��6WDQOH\�:DUIRUG 5HYLVHG� 2FWREHU��� ����

Page 36: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures Figure 7.15

��� &KDSWHU�� 6WDFNV�DQG�4XHXHV

�� &RQVWUXFWRU WHPSODWH�FODVV 7!3ULRULW\4�7!��3ULRULW\4�LQW FDS� �

BGDWD�FDS��BKL,QGH[���� ^

`

�� KHDS6L]H WHPSODWH�FODVV 7!LQW 3ULRULW\4�7!��KHDS6L]H�� FRQVW ^

UHWXUQ BKL,QGH[ � ��`

�� LQVHUW WHPSODWH�FODVV 7!YRLG 3ULRULW\4�7!��LQVHUW�7 FRQVW YDO� ^

LI �LV)XOO��� ^FHUU �� ¯LQVHUW SUHFRQGLWLRQ YLRODWHG� ¯

�� ¯&DQQRW LQVHUW LQWR D IXOO SULRULW\ TXHXH�¯ �� HQGO�WKURZ ���

`BGDWD>��BKL,QGH[@ YDO�VLIW8S�BGDWD� �� BKL,QGH[��

`

�� LV(PSW\ WHPSODWH�FODVV 7!ERRO 3ULRULW\4�7!��LV(PSW\�� FRQVW ^

UHWXUQ BKL,QGH[ ���`

�� PD[LPXP WHPSODWH�FODVV 7!7 FRQVW 3ULRULW\4�7!��PD[LPXP�� FRQVW ^

LI �LV(PSW\��� ^FHUU �� ¯PD[LPXP SUHFRQGLWLRQ YLRODWHG� ¯

�� ¯$Q HPSW\ SULRULW\ TXHXH KDV QR PD[LPXP�¯ �� HQGO�WKURZ ���

`UHWXUQ BGDWD>�@�

`

)LJXUH ���� 3ULRULW\4�KSS �FRQWLQXHG�� 2SHUDWLRQV�IRU�WKH 3ULRULW\4 GDWDVWUXFWXUH� 2SHUDWLRQV�WKDW�DUH�H[HUFLVHV�IRU�WKH�VWXGHQW�DUH�QRW�VKRZQ� 7KH�OLVWLQJ�FRQ�WLQXHV�LQ�WKH�QH[W�ÀJXUH�

&RS\ULJKW��� ����� 'XQJ�;��1JX\HQ�DQG�-��6WDQOH\�:DUIRUG 5HYLVHG� 2FWREHU��� ����

Page 37: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures Figure 7.15

��� &KDSWHU�� 6WDFNV�DQG�4XHXHV

�� &RQVWUXFWRU WHPSODWH�FODVV 7!3ULRULW\4�7!��3ULRULW\4�LQW FDS� �

BGDWD�FDS��BKL,QGH[���� ^

`

�� KHDS6L]H WHPSODWH�FODVV 7!LQW 3ULRULW\4�7!��KHDS6L]H�� FRQVW ^

UHWXUQ BKL,QGH[ � ��`

�� LQVHUW WHPSODWH�FODVV 7!YRLG 3ULRULW\4�7!��LQVHUW�7 FRQVW YDO� ^

LI �LV)XOO��� ^FHUU �� ¯LQVHUW SUHFRQGLWLRQ YLRODWHG� ¯

�� ¯&DQQRW LQVHUW LQWR D IXOO SULRULW\ TXHXH�¯ �� HQGO�WKURZ ���

`BGDWD>��BKL,QGH[@ YDO�VLIW8S�BGDWD� �� BKL,QGH[��

`

�� LV(PSW\ WHPSODWH�FODVV 7!ERRO 3ULRULW\4�7!��LV(PSW\�� FRQVW ^

UHWXUQ BKL,QGH[ ���`

�� PD[LPXP WHPSODWH�FODVV 7!7 FRQVW 3ULRULW\4�7!��PD[LPXP�� FRQVW ^

LI �LV(PSW\��� ^FHUU �� ¯PD[LPXP SUHFRQGLWLRQ YLRODWHG� ¯

�� ¯$Q HPSW\ SULRULW\ TXHXH KDV QR PD[LPXP�¯ �� HQGO�WKURZ ���

`UHWXUQ BGDWD>�@�

`

)LJXUH ���� 3ULRULW\4�KSS �FRQWLQXHG�� 2SHUDWLRQV�IRU�WKH 3ULRULW\4 GDWDVWUXFWXUH� 2SHUDWLRQV�WKDW�DUH�H[HUFLVHV�IRU�WKH�VWXGHQW�DUH�QRW�VKRZQ� 7KH�OLVWLQJ�FRQ�WLQXHV�LQ�WKH�QH[W�ÀJXUH�

&RS\ULJKW��� ����� 'XQJ�;��1JX\HQ�DQG�-��6WDQOH\�:DUIRUG 5HYLVHG� 2FWREHU��� ����

Page 38: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures Figure 7.16

��� 7KH�3ULRULW\�4XHXH ���

�� RSHUDWRU�� WHPSODWH�FODVV 7!RVWUHDP RSHUDWRU���RVWUHDP RV� 3ULRULW\4�7! FRQVW UKV� ^

UKV�WR6WUHDP�RV��UHWXUQ RV�

`

�� WR6WUHDP WHPSODWH�FODVV 7!YRLG 3ULRULW\4�7!��WR6WUHDP�RVWUHDP RV� FRQVW ^

IRU �LQW L �� L � BKL,QGH[� L��� ^RV �� L �� ¯�¯ �� BGDWD>L@ �� ¯ ¯�

``

)LJXUH ���� 3ULRULW\4�KSS �FRQWLQXHG�� 7KH � RXWSXW � RSHUDWLRQV � IRU � WKH3ULRULW\4 GDWD�VWUXFWXUH� 7KLV�FRQFOXGHV�WKH�OLVWLQJ�

(c) HQTXHXH�� IRU�WKH 4XHXH$ GDWD�VWUXFWXUH�(d) GHTXHXH�� IRU�WKH 4XHXH$ GDWD�VWUXFWXUH�(e) SXVK�� IRU�WKH 6WDFN/ GDWD�VWUXFWXUH�(f) SRS�� IRU�WKH 6WDFN/ GDWD�VWUXFWXUH�(g) HQTXHXH�� IRU�WKH 6WDFN/ GDWD�VWUXFWXUH�(h) GHTXHXH�� IRU�WKH 6WDFN/ GDWD�VWUXFWXUH�(i) LQVHUW�� IRU�WKH 3ULRULW\4 GDWD�VWUXFWXUH�(j) H[WUDFW0D[�� IRU�WKH 3ULRULW\4 GDWD�VWUXFWXUH�(k) PD[LPXP�� IRU�WKH 3ULRULW\4 GDWD�VWUXFWXUH�(l) LQFUHDVH.H\�� IRU�WKH 3ULRULW\4 GDWD�VWUXFWXUH�

�²� ,PSOHPHQW�WKH�PHWKRGV LV(PSW\��� LV)XOO��� SXVK��� SRS��� DQG WRS2I�� IRUWKH 6WDFN$ GDWD�VWUXFWXUH�

�²� ,PSOHPHQW�WKH�PHWKRGVLV(PSW\��� LV)XOO��� HQTXHXH��� GHTXHXH��� KHDG2I���DQG WR6WUHDP�� IRU�WKH 4XHXH$ GDWD�VWUXFWXUH�

�²� ,PSOHPHQW�WKH�PHWKRGV SRS�� DQG WRS2I�� IRU�WKH 6WDFN/ GDWD�VWUXFWXUH�

�²� ,PSOHPHQW�WKH�DWWULEXWH� WKH�FRQVWUXFWRU� WKH�GHVWUXFWRU� DQG�WKH�PHWKRGV LV(PSW\���HQTXHXH��� GHTXHXH��� KHDG2I��� RSHUDWRU����� DQG WR6WUHDP�� IRU�WKH4XHXH/ GDWD�VWUXFWXUH�

�²� ,PSOHPHQW�WKH�PHWKRGVLV)XOO��� VLIW8S��� H[WUDFW0D[��� DQGLQFUHDVH.H\��IRU�WKH 3ULRULW\4 GDWD�VWUXFWXUH�

5HYLVHG� 2FWREHU��� ���� &RS\ULJKW��� ����� 'XQJ�;��1JX\HQ�DQG�-��6WDQOH\�:DUIRUG

Page 39: Stacks and Queues - Pepperdine UniversityStacks and Queues Chapter 7. Design Patterns for Data Structures Demo StackA Chapter 7. Design Patterns for Data Structures An array implementation

Design Patterns for Data Structures8.3 The Priority Queue 263

55

45

40 60 20

90

(a)!insert(80);

40

30

75

65

10 25

50

55

45

40 60 20

90

(b)!_data[++_hiIndex] = val;

40

30

75

65

10 25

50

55

45

40 60 20

90

(c)!siftUp(_data, 0, _hiIndex);

40

30

65

10 25

80

80

75

50

Figure 8.17 Action of insert() with the PriorityQ data structure.

Hello, here is some text without a meaning. This text should show what a printedtext will look like at this place. If you read this text, you will get no information. Really?Is there no information? Is there a difference between this text and some nonsense like“Huardest gefburn”? Kjift – not at all! A blind text like this gives you informationabout the selected font, how the letters are written and an impression of the look. Thistext should contain all letters of the alphabet and it should be written in of the originallanguage. There is no need for special content, but the length of words should match the

Revised: June 29, 2016 Copyright ©: 1998, Dung X. Nguyen and J. Stanley Warford

8.3 The Priority Queue 263

55

45

40 60 20

90

(a)!insert(80);

40

30

75

65

10 25

50

55

45

40 60 20

90

(b)!_data[++_hiIndex] = val;

40

30

75

65

10 25

50

55

45

40 60 20

90

(c)!siftUp(_data, 0, _hiIndex);

40

30

65

10 25

80

80

75

50

Figure 8.17 Action of insert() with the PriorityQ data structure.

Hello, here is some text without a meaning. This text should show what a printedtext will look like at this place. If you read this text, you will get no information. Really?Is there no information? Is there a difference between this text and some nonsense like“Huardest gefburn”? Kjift – not at all! A blind text like this gives you informationabout the selected font, how the letters are written and an impression of the look. Thistext should contain all letters of the alphabet and it should be written in of the originallanguage. There is no need for special content, but the length of words should match the

Revised: June 29, 2016 Copyright ©: 1998, Dung X. Nguyen and J. Stanley Warford

8.3 The Priority Queue 263

55

45

40 60 20

90

(a)!insert(80);

40

30

75

65

10 25

50

55

45

40 60 20

90

(b)!_data[++_hiIndex] = val;

40

30

75

65

10 25

50

55

45

40 60 20

90

(c)!siftUp(_data, 0, _hiIndex);

40

30

65

10 25

80

80

75

50

Figure 8.17 Action of insert() with the PriorityQ data structure.

Hello, here is some text without a meaning. This text should show what a printedtext will look like at this place. If you read this text, you will get no information. Really?Is there no information? Is there a difference between this text and some nonsense like“Huardest gefburn”? Kjift – not at all! A blind text like this gives you informationabout the selected font, how the letters are written and an impression of the look. Thistext should contain all letters of the alphabet and it should be written in of the originallanguage. There is no need for special content, but the length of words should match the

Revised: June 29, 2016 Copyright ©: 1998, Dung X. Nguyen and J. Stanley Warford

Figure 7.17