|
1 <?xml version="1.0" encoding="utf-8"?> |
|
2 <!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. --> |
|
3 <!-- This component and the accompanying materials are made available under the terms of the License |
|
4 "Eclipse Public License v1.0" which accompanies this distribution, |
|
5 and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". --> |
|
6 <!-- Initial Contributors: |
|
7 Nokia Corporation - initial contribution. |
|
8 Contributors: |
|
9 --> |
|
10 <!DOCTYPE reference |
|
11 PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd"> |
|
12 <reference id="GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22" xml:lang="en"><title>linkedlist: |
|
13 Using the Linked List classes</title><shortdesc/><prolog><metadata><keywords/></metadata></prolog><refbody> |
|
14 <section id="GUID-4B81C04C-94DD-4694-9BD9-447ADE72B294"><p>The following examples show the use of the linked list classes: </p> <ul> |
|
15 <li id="GUID-F204E5EC-593B-556D-83DC-72B7B5C7C46A"><p><xref href="GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22.dita#GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22/GUID-4366D8F9-3E8F-53B2-BB3C-A32CA13DA96D"> Singly linked list example</xref> </p> </li> |
|
16 <li id="GUID-295D6285-199E-5FD8-B0B9-90FA546831F8"><p><xref href="GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22.dita#GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22/GUID-FC5F8D9A-C594-5FBB-9AD1-8DEB72A5F5BD"> Doubly linked list example</xref> </p> </li> |
|
17 <li id="GUID-F459FF26-D837-5E5F-BB50-67D12D3EE93F"><p><xref href="GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22.dita#GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22/GUID-7FFDF885-72F4-543E-A93E-C6A57D3D7DE0"> Delta queue example</xref> </p> </li> |
|
18 </ul> </section> |
|
19 <section id="GUID-4366D8F9-3E8F-53B2-BB3C-A32CA13DA96D"><title>Singly linked |
|
20 list example</title> <p>This example application demonstrates the use of singly |
|
21 linked lists. The templated <xref href="GUID-40BA1263-BE07-3C7F-955E-0BBC632E7C58.dita"><apiname>TSglQue</apiname></xref> class is used to create |
|
22 a singly linked list. </p> <p><b>Download</b> </p> <p>Click on the following |
|
23 link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-54304ba8-7028-43b8-89b8-d89432684981.zip" scope="external">sgllist.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-54304ba8-7028-43b8-89b8-d89432684981.html" scope="peer">browse </xref>to view the example.</p> <p><b>Description</b> </p> <p>The |
|
24 example creates a singly linked list of objects of the <xref href="GUID-129B4F4D-500E-37E8-9D29-94E3E6D11BD9.dita"><apiname>TDigit</apiname></xref> class. |
|
25 This list represents a long number. An object of class <xref href="GUID-F20187A8-CC62-34C6-830C-FB077515AAF8.dita"><apiname>CLongNumber</apiname></xref> owns |
|
26 the list. The user can edit this list using the functions defined in the <codeph>CLongNumber</codeph> class. |
|
27 The following edit operations are possible: </p> <ul> |
|
28 <li id="GUID-C793B73E-9037-5B22-8A3A-EFAD7A666D53"><p>Insert an object of |
|
29 the <codeph>TDigit</codeph> class at the start of the singly linked list </p> </li> |
|
30 <li id="GUID-C46B31C9-49FF-5457-9157-E55316F26252"><p>Insert an object of |
|
31 the <codeph>TDigit</codeph> class at the end of the singly linked list </p> </li> |
|
32 <li id="GUID-9AFD5005-AA6A-5D7D-9B96-35CBA4791128"><p>Remove an object of |
|
33 the <codeph>TDigit</codeph> class from the end of the singly linked list </p> </li> |
|
34 </ul> <p>The user can perform any of these operations by pressing keys specified |
|
35 in the menu. <codeph>CLongNumber</codeph> is an active object class and handles |
|
36 the key press events in the <codeph>CLongNumber::RunL()</codeph> function.The <codeph>CLongNumber::ReadFunc()</codeph> function |
|
37 displays a menu and waits for an asynchronous key press event. </p> <p>An |
|
38 object of the templated <xref href="GUID-0A865633-5038-3320-A472-A2EE18F04FBE.dita"><apiname>TSglQueIter</apiname></xref> class is used to traverse |
|
39 this linked list. The sum of all digits of the number represented by the linked |
|
40 list is displayed to the user. </p> <p>An object of the <xref href="GUID-D0AE0223-82DC-369A-A8FB-C2086C1EC77C.dita"><apiname>CAdder</apiname></xref> class |
|
41 is used to traverse the <codeph>CLongNumber::iNumber</codeph> list and print |
|
42 the sum of all digits of the number represented by this list. The <codeph>CAdder::Add()</codeph> function |
|
43 gets this sum. </p><p><b>Related APIs</b></p><ul> |
|
44 <li><p><xref href="GUID-D0AE0223-82DC-369A-A8FB-C2086C1EC77C.dita"><apiname>CAdder</apiname></xref></p></li> |
|
45 <li><p><xref href="GUID-F20187A8-CC62-34C6-830C-FB077515AAF8.dita"><apiname>CLongNumber</apiname></xref></p></li> |
|
46 <li><p><xref href="GUID-129B4F4D-500E-37E8-9D29-94E3E6D11BD9.dita"><apiname>TDigit</apiname></xref></p></li> |
|
47 <li><p><xref href="GUID-0A865633-5038-3320-A472-A2EE18F04FBE.dita"><apiname>TSglQueIter</apiname></xref></p></li> |
|
48 </ul> <p><b>Design and implementation</b> </p> <p>Figure 1 shows the classes |
|
49 in the example. </p> <fig id="GUID-7BB458A7-C1E6-5919-A503-BFBE695432AA"> |
|
50 <title> Figure 1. Classes in the singly linked list example |
|
51 </title> |
|
52 <image href="GUID-D6B332EB-D9D7-5598-98C7-E73164A2057D_d0e228222_href.jpg" placement="inline"/> |
|
53 </fig> <p><b>Class summary</b></p><ul> |
|
54 <li><p><xref href="GUID-40BA1263-BE07-3C7F-955E-0BBC632E7C58.dita"><apiname>TSglQue</apiname></xref></p></li> |
|
55 <li><p> <xref href="GUID-0A865633-5038-3320-A472-A2EE18F04FBE.dita"><apiname>TSglQueIter</apiname></xref></p></li> |
|
56 </ul><p><b>Build</b> </p> <p><xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The |
|
57 Symbian OS build process</xref> describes how to build this example. </p> <p>For |
|
58 the emulator, the example builds an executable called <filepath>sgllist.exe</filepath> in |
|
59 the <filepath>epoc32\release\winscw\<udeb or urel>\</filepath> folder. </p><p><b>See |
|
60 also:</b></p><p><xref href="GUID-052E9582-9A35-50B0-A32E-F7E6A01A2E2A.dita">Using |
|
61 Singly Linked Lists</xref></p> </section> |
|
62 <section id="GUID-FC5F8D9A-C594-5FBB-9AD1-8DEB72A5F5BD"><title>Doubly linked |
|
63 list example</title> <p>This example application demonstrates the use of doubly |
|
64 linked lists. The templated <xref href="GUID-E5E9834A-63CA-3F03-88D3-85B912ADA54C.dita"><apiname>TDblQue</apiname></xref> class is used create |
|
65 a doubly linked list. </p> <p><b>Download</b> </p> <p>Click on the following |
|
66 link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-3a268b1a-9a7e-49ae-bc76-f99bdc3b32f5.zip" scope="external">dbllist.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-3a268b1a-9a7e-49ae-bc76-f99bdc3b32f5.html" scope="peer">browse </xref>to view the example code</p> <p><b>Description</b> </p> <p>The |
|
67 example creates a doubly linked list of objects of the <codeph>TLetter</codeph> class. |
|
68 This list represents a character string. An object of class <codeph>CMyStringReverse</codeph> owns |
|
69 this string. The user can edit this string using the functions defined in |
|
70 the <codeph>CMyStringReverse</codeph> class. The following edit operations |
|
71 are possible: </p> <ul> |
|
72 <li id="GUID-D3B39123-1249-59DD-BC1F-2D62B7F9DE84"><p>Insert a character at |
|
73 the start of the list </p> </li> |
|
74 <li id="GUID-E6CEC00A-B6C1-53B2-9AAA-870EA8B06A5B"><p>Insert a character at |
|
75 the end of the list </p> </li> |
|
76 </ul> <p>The user can perform either of these operations by pressing keys |
|
77 specified in the menu. <codeph>CMyStringReverse</codeph> is an active object |
|
78 class and handles key press events in the <codeph>CMyStringReverse::RunL()</codeph> function. |
|
79 The <codeph>CMyStringReverse::ReadFunc()</codeph> function displays a menu |
|
80 and waits for an asynchronous key press event. </p> <p>The <codeph>CMyStringReverse</codeph> class |
|
81 has a doubly linked list iterator, <codeph>iIteratorString</codeph>. The <codeph>iIteratorString</codeph> object |
|
82 iterates through the list <codeph>iString</codeph> from start to end to print |
|
83 the string reversed. </p><p><b>Design and implementation</b></p><p>Figure |
|
84 2 shows the classes in the example.</p><fig id="GUID-67F3F952-D0A8-4A28-8CB2-0394C1562A29"> |
|
85 <title> Figure 2. Classes in the doubly linked list example </title> |
|
86 <image href="GUID-21A1D1D2-524E-560E-88C8-16E2E49E2B7F_d0e228361_href.jpg" placement="inline"/> |
|
87 </fig><p><b>Class summary</b></p><ul> |
|
88 <li><p><xref href="GUID-E5E9834A-63CA-3F03-88D3-85B912ADA54C.dita"><apiname>TDblQue</apiname></xref> - A templated class that provides the behaviour |
|
89 for managing a doubly linked list.</p></li> |
|
90 </ul> <p><b>Build</b> </p> <p><xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The |
|
91 Symbian OS build process</xref> describes how to build this example. </p> <p>For |
|
92 the emulator, the example builds an executable called <filepath>dbllist.exe</filepath> in |
|
93 the <filepath>epoc32\release\winscw\<udeb or urel>\</filepath> folder. </p> <p><b>See |
|
94 also</b> </p> <p><xref href="GUID-F45EA14E-F857-5D59-BFBA-E2F563287359.dita">Using |
|
95 Doubly Linked Lists</xref> </p> <p><b>Example code</b> </p> </section> |
|
96 <section id="GUID-7FFDF885-72F4-543E-A93E-C6A57D3D7DE0"><title>Delta queue |
|
97 example</title> <p>This example application demonstrates the use of the delta |
|
98 queue. The templated <xref href="GUID-E67BB56F-F9DD-316D-BC16-ED60D31A5925.dita"><apiname>TDeltaQue</apiname></xref> class is used create a delta |
|
99 queue. </p> <p><b>Download</b> </p> <p>Click on the following link to download |
|
100 the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-6a73c507-073b-4993-aa02-a677a384bafb.zip" scope="external">deltaque.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-6a73c507-073b-4993-aa02-a677a384bafb.html" scope="peer">browse </xref>to view the example code.</p> <p><b>Description</b> </p> <p>The |
|
101 example creates an object of the <codeph>CTimerEntry</codeph> class. This |
|
102 is a <xref href="GUID-5733DF34-5B54-3044-BBED-3BFECB7ACE7A.dita"><apiname>CTimer</apiname></xref> derived class. An object of this class generates |
|
103 timer events by using the <xref href="GUID-5733DF34-5B54-3044-BBED-3BFECB7ACE7A.dita#GUID-5733DF34-5B54-3044-BBED-3BFECB7ACE7A/GUID-F389C301-D56B-3981-9C26-180E02BFF171"><apiname>CTimer::After()</apiname></xref> function. The |
|
104 data member of this class, <codeph>iQueue</codeph> is a delta list. The offset |
|
105 value of each node in this list is the tick count after each timer event. |
|
106 The <codeph>CTimerEntry::Arbitrator()</codeph> function decides the action |
|
107 to be performed for each event generated by the timer. It either adds tick |
|
108 counts to the list or removes elements from the list based on the state of |
|
109 the queue. </p><p><b>Related APIs</b></p><ul> |
|
110 <li><p><xref href="GUID-5733DF34-5B54-3044-BBED-3BFECB7ACE7A.dita"><apiname>CTimer</apiname></xref> - Base class for a timer active object.</p></li> |
|
111 <li><p><xref href="GUID-5733DF34-5B54-3044-BBED-3BFECB7ACE7A.dita#GUID-5733DF34-5B54-3044-BBED-3BFECB7ACE7A/GUID-F389C301-D56B-3981-9C26-180E02BFF171"><apiname>CTimer::After()</apiname></xref></p></li> |
|
112 </ul><p><b>Design and implementation</b></p><p> Figure 3 shows the classes |
|
113 of the example. </p><fig id="GUID-2E093EFA-7A18-4623-AE31-3FA1FDB103F5"> |
|
114 <title> Figure 3. Classes of the delta queue example </title> |
|
115 <image href="GUID-8CF0C00C-0FDF-517E-96FB-84F718237F61_d0e228489_href.jpg" placement="inline"/> |
|
116 </fig><p><b>Class summary</b></p><ul> |
|
117 <li><p> <xref href="GUID-E67BB56F-F9DD-316D-BC16-ED60D31A5925.dita"><apiname>TDeltaQue</apiname></xref></p></li> |
|
118 <li><p><xref href="GUID-5733DF34-5B54-3044-BBED-3BFECB7ACE7A.dita"><apiname>CTimer</apiname></xref> - Base class for a timer active object.</p></li> |
|
119 </ul> <p><b>Build</b> </p> <p><xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The |
|
120 Symbian OS build process</xref> describes how to build this example. </p> <p>For |
|
121 the emulator, the example builds an executable called <filepath>deltaque.exe</filepath> in |
|
122 the <filepath>epoc32\release\winscw\<udeb or urel>\</filepath> folder. </p> </section> |
|
123 </refbody></reference> |