按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 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 Figur