stacks and queues - pepperdine universitystacks and queues chapter 7. design patterns for data...
TRANSCRIPT
Design Patterns for Data Structures
Stacks and Queues
Chapter 7
Design Patterns for Data Structures
Demo StackA
Chapter 7
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
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��� ����
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��� ����
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
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��� ����
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
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
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
Design Patterns for Data Structures
Demo QueueA
Chapter 7
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
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
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
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
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
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
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.
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.
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��� ����
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��� ����
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
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��� ����
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��� ����
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.
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
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
Design Patterns for Data Structures
The Priority Queue
A heap implementation of the priority queue
Chapter 7
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��� ����
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��� ����
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��� ����
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
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
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
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��� ����
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��� ����
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��� ����
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
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