嗔秤戻幣�哉膵�云利匈嬉蝕湊蛸賜�塋床四衲���萩晦編報炎嘔囚^泡仟 ̄云利匈�《超噌�殻窟�嵌虜隆輓麈觚翹瀘卉韮�仍仍�。� 烏御危列
浪慕利 卦指云慕朕村 厘議慕尺 厘議慕禰 TXT畠云和墮 序秘慕杏 紗秘慕禰

VB2008貫秘壇欺娼宥(PDF鯉塀哂猟井)-及34嫗

梓囚徒貧圭�鮗� ○ 賜 ★ 辛酔堀貧和鍬匈��梓囚徒貧議 Enter 囚辛指欺云慕朕村匈��梓囚徒貧圭�鮗� ● 辛指欺云匈競何��
!!!!隆堋響頼��紗秘慕禰厮宴和肝写偬堋響��



           demonstrates that when you call a method�察�you are assigning the parameters of the method to  

           variables in the called method。 Looking back at Table 4´1�察�you can see that when you assign a  

           value to a value type�察�manipulating the assigned instance does not change the original instance。 

                However�察�you can gain some control over how parameters are handled。 When Method�┌� is  

           declared�察�the assumption is made that all of the parameters are passed to the method imple

           mentation as value types。 It is possible to pass the parameters to the method as reference types�察 �

           as determined by one of the following keywords�此�



                ByVal�此�When a method has parameters declared with the ByVal keyword�察�the parameter  

                has its value copied from the caller variable to method implementation variable�察�even if it  

                is a reference type。  



                ByRef�此�When a method has parameters declared with the ByRef keyword�察�the caller variable  

                is not copied to the parameter variable�察�rather�察�the variable used by the caller and the method  

                variable are one and the same。 Thus�察�changes to the method variable�察�as in the previous  

                example�察�would be visible to the caller of the method。 



                Figure 4´6 illustrates how to use the ByRef keyword so that a modified value type will be  

           visible to the caller of the method。 

                Now that you have an understanding of the depth´first search algorithm and how the data  

           structure will be defined as a user´defined value type�察�let¨s get started building the search  

           algorithm。 


´´´´´´´´´´´´´´´´´´´´´´Page 109´´´´´´´´´´´´´´´´´´´´´´´

                        CH AP T E R   4   *    L E A R N I N G   A B OU T   D AT A  S TR U CT U R E S�察  �DE CI SI ON S�察  �A N D   L O OP S 87 



       ByRef is associated with the parameter 

        indicating that the value variable can 

         be modified in the method and the 

           result will be visible to the caller 



 Sub Method��ByRef value As MyValueType�察�ByVal reference As MyReferenceType�� 

     value。value = 10 

     reference。value = 10 

 End Sub 



 Dim value As MyValueType 

 Dim reference As MyReferenceType = New MyReferenceType�┌� 

 Method��value�察�reference�� 

 Console。WriteLine�─�value value=; & value。value & _ 

     ; reference value=; & reference。value�� 



                                                    The variable value。value 

                                                   will contain the value of 10 

                                                     assigned in the method 



Figure 4´6。  Using the ByRef keyword 



Organizing the Search Algorithm 



The search algorithm we will write in this chapter deals with the problem of planning a flight  

from point A to point B。 The first step is to figure out the features we need to implement。 Here¨s  

a summary�此�



     o  A data structure implements the node。 



     o  A node can contain references to other nodes。 



     o  Each node has a description and unique identifier to distinguish it from other nodes。 



     o  All of the nodes have flight information。 



     o  An algorithm will traverse the nodes and keep track of its path。 



     o  The path is returned as a list of nodes。 



      The data structure is based on the problem of planning a flight between two places�察�as  

illustrated in Figure 4´7。 


´´´´´´´´´´´´´´´´´´´´´´Page 110´´´´´´´´´´´´´´´´´´´´´´´

88         CH AP T E R   4   *    L E A R N IN G   AB OU T   D AT A  S TR U CT U R E S�察  �DE CI SI ON S�察  �A N D   L O OP S 



            Figure 4´7。 Planning flight routes 



                 As shown in Figure 4´7�察�three main attributes describe an individual node in the flight route�此�



                 o  City name�此�A description that will be used as a key when a user defines a starting and end  

                    point。 



                 o  Coordinates�此�An illustrative approach used to describe how cities are located in relation  

                    to each other。 



                 o  Connections�此�A representative connection between two cities。 As in real life�察�not all cities  

                    connect to other cities。 



                 For the scope of this chapter�察�there are only two projects�此�a class library that contains the  

            depth´first search algorithm and the testing application。 The project structure looks like Figure 4´8。  

           As with the examples in the previous chapters�察�remember to add a reference to the class library  

            ��SearchSolution�� and to set the test project ��TestSearchSolution�� as the startup project。 



            Figure 4´8。 Solution project structure 


´´´´´´´´´´´´´´´´´´´´´´Page 111´´´´´´´´´´´´´´´´´´´´´´´

                       CH AP T E R   4   *    L E A R N I N G   A B OU T   D AT A  S TR U CT U R E S�察  �DE CI SI ON S�察  �A N D   L O OP S 89 



Writing the Depth´First Search Code 



We will implement the depth´first search algorithm in three main steps。 The first step is to  

define and implement the data structure。 The second step is to implement the algorithm and  

tests。 Finally�察�we¨ll run the algorithm and see what route has been found。 



Defining and Implementing the Data Structure 



As I mentioned earlier�察�for the most part�察�developers use the Class keyword to define a data  

structure as a reference type�察�because of the constraints of using a value type。 However�察�for this  

example�察�we will start out by using the Structure keyword to define Node as a value type。 The  

depth´first search algorithm has two distinct implementation details�此�data structure and algo

rithm。 Because each detail is separate�察�it seems appropriate to define Node as a value type。 So�察 �

least let¨s try it and see what happens。 

     As per the attributes illustrated in Figure 4´7�察�the data structure that is added to the  

SearchSolution project is implemented as shown in Figure 4´9。 



                                   Name of the city 



 Public Structure Node 

     Public CityName As String 

     Public X As Double                       X and Y coordinates 

     Public Y As Double 

                                                    of the city 

     Public Connections As Node�┌� 

 End Structure 



                  Array of cities that are 

                    reachable from the 

                        current city 



Figure 4´9。  The data structure for the depth´first search 



     The data structure is declared as a Structure�察�with the connections represented as an array  

of Node elements。 An array of  Node elements is formed when one  Node contains a list of refer

ences to other Node elements。 Think of an array as a collection of sticky notes that say�察 �Here is  

a reference to A�察�B�察�C�察�and so on。 ̄ By having one node reference another node�察�a sort of never

ending tree is created�察�because it is possible to travel back and forth between two cities。 Thus�察 �

the depth´first search algorithm will need to avoid repeating itself。 

     The Connections data member is an array used to define cities that are the next connection。  

To reference another city�察�you can create the reference as an array of Node elements�察�as in the  

declaration shown in Figure 4´9。 An alternative is to use an array of strings that contain the  

name of the next city�察�like this�此 �


´´´´´´´´´´´´´´´´´´´´´´Page 112´´´´´´´´´´´´´´´´´´´´´´´

90        CH AP T E R   4   *    L E A R N IN G   AB OU T   D AT A  S TR U CT U R E S�察  �DE CI SI ON S�察  �A N D   L O OP S 



           Public Structure Node  

             Public CityName As String 

             Public X As Double 

             Public Y As Double 

             Public Connections As String�┌� 

           End Structure 



                In this dec
卦指朕村 貧匯匈 和匯匈 指欺競何 壘��0�� 家��0��
隆堋響頼��紗秘慕禰厮宴和肝写偬堋響��
梁椣戻幣�� 梁心弌傍議揖扮窟燕得胎��傍竃徭失議心隈才凪万弌誌育断蛍�輌臆惨軼僑〃�燕慕得珊辛參資誼持蛍才将刮襲潜��範寔亟圻幹慕得 瓜寡追葎娼得辛參資誼寄楚署衛、持蛍才将刮襲潜填��