首页
网站开发
桌面应用
管理软件
微信开发
App开发
嵌入式软件
工具软件
数据采集与分析
其他
首页
>
> 详细
CHC5223代做、java程序设计代写
项目预算:
开发周期:
发布时间:
要求地区:
CHC5223 Data Structures and Algorithms 2023–2024 Semester 2
1 of 15
Assignment 2
Value 60% of coursework: Part A is 30% and Part B is 30%
Individual work
Learning outcomes
Students will be able to understand
1.1 Data structures
1.2 The applications of data structures
1.3 Object-oriented programming concepts
1.4 Methods for program testing
Students will have acquired skills in:
2.1 Data abstraction
2.2 The use of data structures
2.3 Programming at a more advanced level in a high-level object-oriented language
2.4 Program testing and documentation
Students will have acquired skills in:
3.1 Self-management
3.2 Learning
3.3 Communication
3.4 Problem solving
3.5 Information technology
Submission requirements
The assignment submitted should compressed into a .zip file, the following files should be
contained in the compressed file:
• a report as a Microsoft Word document containing text of all your classes.
filename format: student ID+CHC5223_CW2_Report.docx
• a .zip file containing the project: the runnable jar file (if available) and all the program’s
source texts (.java), including those provided
filename format: student ID +CHC5223_ CW2_Files.zip
Part A – binary search tree
General requirements
All your programming must conform to “Java Conventions and Programming Guidelines” – see
module Moodle site.
You must paste the source code of all your classes into your report, as text or images.
Introduction
The topic of this part of the assignment is binary search trees.
The interface IMemberDB describes methods for an abstract data type (ADT) which holds a
database of Member objects.
You must implement IMemberDB as a binary search tree for Assignment 2.
You must not make any changes to these interfaces. CHC5223 Data Structures and Algorithms 2023–2024 Semester 2
2 of 15
Requirements
Basic rules
You must create one executable project after completing all tasks.
One Java class should be defined in one .java file respectively.
In the report, the source code of each task, together with the corresponding explanation, should
be presented separately.
Failure to comply with these rules will result in zero marks.
Task 1
You must create a Java class called MemberBST that implements the interface IMemberDB.
You must use a binary search tree but it does not need to be self-balancing.
You must not encapsulate existing implementations of collections in your submission. For
example, you must not create a TreeMap object and call methods on that object from your class.
Failure to comply with this will result in zero marks for that part.
Tip: use String.compareTo to compare strings lexicographically. You can treat uppercase and
lowercase as different. (Hash codes have no place in this assignment.)
Methods can be implemented either iteratively or recursively. You must not implement the
method remove by just building a new tree.
You may make use of the supplied source code for the method remove, based on ObjectOriented
Programming in Oberon-2, Hanspeter Mössenböck Springer-Verlag 1993, page 78,
transcribed into Java by David Lightfoot (see Appendix).
The constructor for MemberBST must print the string “Binary Search Tree” to System.out.
Take care that you have not used a linear search O(n) where you should have used a binary
search tree, aiming towards O(logn).
5 marks
You must give clear rationales and detailed explanations of your design and implementation in
the report.
5 marks
Task 2
You must make appropriate use of assertions (assert statements) to protect preconditions of the
operations. Remember to enable assertion checking for your project.
You must give clear rationales and detailed explanations of your design and implementation in
the report.
2 mark
Task 3
You must make your class log monitoring information, either to a text file or by calls of
System.out.println.
It must log (at least):
• for every addition of a Member (put), for every retrieval of a Member(get), for every
deletion of a Member(remove):
o the Member name; CHC5223 Data Structures and Algorithms 2023–2024 Semester 2
3 of 15
o the sequence of nodes of the tree visited.
• Paste your log into your report.
We have supplied a main program CHC5223.java for your use with this assignment.
The name of the file is set in the static variable filename.
Sample files sampleMembersUK.csv and sampleMembersUS.csv each contain 500 members in
this format.
3 marks
You must give clear rationales and detailed explanations of your design and implementation in
the report.
3 mark
Task 4
You must devise a test plan for your implementation. Be sure to check (among many other
cases).
• that deleting a leaf node works correctly
• that deleting a node with one descendant works correctly
• that deleting a node with two descendants works correctly
2 marks
You must give clear rationales and detailed explanations of your design and implementation in
the report.
3 mark
Task 5
By using the supplied main program, or by other means, you must test your MemberBST.
You must give clear evidence and detailed explanations of your test in the report, including your
test plan, test data used, expected results and actual results. You must show your actual results
and the logging information copied from your log file or the output pane of your IDE. Do not
simply state “test passed”, or similar.
5 mark
Task 6
You must comment on the time efficiency and space efficiency of your implementation of the
binary search tree.
You must give clear rationales and detailed explanations in the report.
2 mark
total 30 marks CHC5223 Data Structures and Algorithms 2023–2024 Semester 2
4 of 15
Part B – graphs and pathfinding
The topic of this part of Assignment 2 is graphs and pathfinding.
General requirements
All your programming must conform to “Java Conventions and Programming Guidelines”.
You must paste the source code of all your classes into your report, as text, not images.
You must implement all necessary data structures using only arrays.
When programming in Java it is usual to make use of collection classes from the Java class library.
However, if you need to program in some other language such classes, or their equivalents, will
not necessarily be available.
Task 1
Find or devise a transport network – it need not be real, but it must be realistic. It must be an
undirected, connected graph, with no loops. It must have at least eight nodes.
Each node should have a name (with no spaces in it) and x and y positions (0 x < 256 and
0 y < 256) indicating the approximate position of the node on a map with a 256 × 256 grid (y
increasing downwards).
The links must contain information about the distance between the nodes it connects. The
distance can be measured in suitable units of length, such as km, or time, such as minutes.
The links between them must be such that there are several pairs of nodes that are linked by
more than one route.
You must sketch your network and include it in your report. The sketch must show each node
annotated with its name and located on the sketch at its x and y position. The sketch must show
each link annotated with its distance. You can make the sketch by hand but if you do so you will
need to scan it to include in your report.
2 marks
Task 2
You must express your network as a text file using the syntax:
“station” name x y
“link” station station distance
Each station must have been defined in a station line before being cited in a link line.
Include the content of the text file in your report.
2 marks
Task 3
You must implement Java classes StackInt, QueueInt, ListInt and SetInt. These will be subclasses
respectively of abstract classes AbsStackInt, AbsQueueInt, AbsListInt, AbsSetInt, whose source is
provided and shown in the appendixes. These are given as abstract classes (to be ‘sub-classed’)
rather than as interfaces (to be ‘implemented’) partly because they are all ‘bounded’, that is,
with limited capacity because of being implemented by arrays, and also to allow us to give you
hints on how to implement them. CHC5223 Data Structures and Algorithms 2023–2024 Semester 2
5 of 15
The required behaviour of the methods of the classes is indicated as pre- and post-conditions in
comments.
You must give clear rationales and detailed explanations of your design and implementation in
the report.
4 marks
Task 4
You must make appropriate use of assertions (assert statements) to protect preconditions of the
operations. Remember to enable assertion checking for your project.
1 mark
Task 5
By using JUnit or otherwise you must test your implementations of StackInt, QueueInt, ListInt
and SetInt. To do this, create objects of each class in which capacity is set to a low value, such as
10. You will set it to something larger when deploying the classes later.
You must give clear evidence and detailed explanations of your design and implementation in
the report, including the test plan, test data used, expected results, and actual results. Your
actual results must be shown either as screenshot images or as text copied from the output
pane of the development toolkit.
4 marks
Task 6
You must create a Java class StationInfo to implement the Java interface IStationInfo (supplied).
1 mark
Task 7
You must create a Java class to define an adjacency matrix
final double NO_LINK = Double.MAX_VALUE; // was erroneous double.MAX_VALUE
int numStations; // 0 <= numStations <= capacity
double distance[ ][ ];
where, for all i, j in 0 <= numStations <= capacity
distance [i][j] is the distance from station with number i to station with number j
distance [i][j] is equal to distance [j][i]
distance [i][i] = NO_LINK
Task 8
and also define a list of objects of class StationInfo held in an array.
Task 9
You must create a Java method in this class that reads a text file containing the textual
description of your network and builds the corresponding list of stations and the matrix of links. CHC5223 Data Structures and Algorithms 2023–2024 Semester 2
6 of 15
You must perform as many validity checks in this as you can and report any errors. Include the
text of this class in your report.
You must give clear rationales and detailed explanations of your design and implementation in
the report.
2 marks
Task 10
Use print statements to show the contents of the list and the matrix after using your program to
build them from the data held in your text file. Copy the results into your report.
You must give clear rationales and detailed explanations of your design and implementation in
the report.
2 marks
Task 11
You must write Java methods (as in Appendixes) to perform a depth-first traversal from a given
node of your network and a breadth-first traversal from the same node, making use of the
algorithms given in the appendix. Include the methods text and the resulting sequence of node
names in your report.
You must give clear rationales and detailed explanations of your design and implementation in
the report.
4 marks
Task 12
You must implement Dijkstra’s algorithm (as in Appendix) making use of the data structures you
have constructed, to find and display the shortest path between two stations in your network.
You must also ‘instrument’ your implementation to count the number of iterations of the while
loop
You must give clear rationales and detailed explanations of your design and implementation in
the report.
4 marks
Task 13
You must give clear rationales and detailed explanations of the difference between Dijkstra’s
algorithm and A* algorithm and state how their behavior would differ in the case of your
network.
4 marks
total 30 marks
CHC5223 Data Structures and Algorithms 2023–2024 Semester 2
7 of 15
Obtaining help
It is encouraged to request further clarification on what is required for this assignment. Please
try to do this during normal contact time and avoid asking for such help in the last week before
the deadline.
You can discuss the requirements and the material covered in the assignment with others but
what you create must be all your own work. Be careful to avoid collusion.
Declare in your report any help you have received other than that from the module teaching
team.
Feedback
In addition to the written feedback that we aim to provide within the normal interval, you will be
able to obtain fast, brief, verbal formative feedback and help on correcting your work at your
practical classes. CHC5223 Data Structures and Algorithms 2023–2024 Semester 2
8 of 15
Appendix: remove
private class Node {
private Member data;
private Node left, right;
public Node(Member s) {data = s; left = null; right = null;}
} // Node
private Node root;
public Member remove(String name){
// based on Object-Oriented Programming in Oberon-2
// Hanspeter Mössenböck Springer-Verlag 1993, page 78
// transcribed into Java by David Lightfoot
// put assert statement for preconditions here
Node parent = null, del, p = null, q = null;
Member result;
del = root;
while (del != null && !del.data.getName().equals(name)) {
parent = del;
if (name.compareTo(del.data.getName()) < 0)
del = del.left;
else
del = del.right;
}// del == null || del.data.getName().equals(name))
if(del != null) { // del.data.getName().equals(name)
// find the pointer p to the node to replace del
if (del.right == null) p = del.left;
else if (del.right.left == null) {
p = del.right; p.left = del.left;
} else {
p = del.right;
while (p.left != null) {q = p; p = p.left;}
q.left = p.right; p.left = del.left; p.right = del.right;
}
if(del == root) root = p;
else if (del.data.getName().compareTo(parent.data.getName()) < 0)
parent.left = p;
else parent.right = p;
// reduce size of tree by one
result = del.data;
}
else result = null;
return result;
} // remove CHC5223 Data Structures and Algorithms 2023–2024 Semester 2
9 of 15
Appendix Abstract class AbsListInt
package CHC5223; // or whatever
/**
* Abstract class to be sub-classed by class(es) that represent lists of ints
*
* You may change the package name for this, but you should not
* modify it in any other way.
*
*/
abstract public class AbsListInt {
protected int list[];
protected int size; // 0 <= size <= capacity
protected final int capacity;
/**
* @param capacity -- maximum capacity of this list
* @post new list of current size zero has been created
*/
public AbsListInt(int capacity){
// implements a bounded list of int values
this.capacity = capacity;
this.size = 0;
list = new int[capacity];
}
public int getCapacity() {return capacity;}
public int getSize() {return size;}
/**
* @param n node to be added
* @pre getSize() != getCapacity()
* @post n has been appended to list
*/
abstract public void append(int n);
/**
* @param x -- value to be sought
* @pre true
* @return true if x is in list*/
abstract public boolean contains(int x);
} CHC5223 Data Structures and Algorithms 2023–2024 Semester 2
10 of 15
Appendix Abstract class AbsQueueInt
package CHC5223; // or whatever
/**
* Abstract class to be sub-classed by class(es) that represent stacks of ints
*
* You may change the package name for this, but you should not
* modify it in any other way.
*
*/
abstract public class AbsQueueInt {
protected int queue[];
protected int size; // 0 <= size <= capacity
protected final int capacity;
public AbsQueueInt(int capacity){
this.capacity = capacity;
this.size = 0;
this.queue = new int[capacity];
}
public int getCapacity() {return capacity;}
public int getSize() {return size;}
/**
* @param n node to be added
* @pre getSize() != getCapacity()
* @post n has been added to back of queue
*/
abstract public void addToBack(int n);
/**
* @pre getSize() != 0
* @post element at front of queue has been removed
* @return value that has been removed */
abstract public int removefromFront();
} CHC5223 Data Structures and Algorithms 2023–2024 Semester 2
11 of 15
Appendix Abstract class AbsSetInt
package CHC5223; // or whatever
/**
* Abstract class to be sub-classed by class(es) that represent stacks of ints
*
* You may change the package name for this, but you should not
* modify it in any other way.
*
*/
abstract public class AbsSetInt {
protected int set[];
protected int size; // 0 <= size <= capacity
protected final int capacity;
/**
* @param capacity -- maximum capacity of this queue
* @pre capacity >= 0
* @post new set of current size zero has been created
*/
public AbsSetInt(int capacity){
this.capacity = capacity;
this.size = 0;
this.set = new int[capacity];
}
public int getCapacity() {return capacity;}
public int getSize() {return size;}
/**
* @param x -- value to be sought
* @pre true
* @return true iff x is in list*/
abstract public boolean contains(int x);
/**
* @param n node to be added
* @pre contains(n) || getSize() != getCapacity()
* @post contains(n)
*/
abstract public void include(int n);
/**
* @pre true
* @post !contains(n)
*/
abstract public void exclude(int n);
} CHC5223 Data Structures and Algorithms 2023–2024 Semester 2
12 of 15
Appendix Abstract class AbsStackInt
package CHC5223; // or whatever
/**
* Abstract class to be sub-classed by class(es) that represent stacks of ints
*
* You may change the package name for this, but you should not
* modify it in any other way.
*
*/
abstract public class AbsStackInt {
protected int stack[];
protected int size; // 0 <= size <= capacity
protected final int capacity;
/**
* @param capacity -- maximum capacity of this queue
* @pre capacity >= 0
* @post new stack of current size zero has been created
*/
public AbsStackInt(int capacity){
this.capacity = capacity;
this.size = 0;
stack = new int[capacity];
}
public int getCapacity() {return capacity;}
public int getSize() {return size;}
/**
* @param n node to be added
* @pre getSize() != getCapacity()
* @post n has been pushed on to top of stack
*/
abstract public void push(int n);
/**
* @pre getSize() != 0
* @post element on top of stack has been removed
* @return value that has been removed */
abstract public int pop();
/**
* @pre getSize() != 0
* @return value on top of stack */
abstract public int peek() ;
} CHC5223 Data Structures and Algorithms 2023–2024 Semester 2
13 of 15
Interface IStationInfo
package CHC5223; // or whatever
/**
* Interface to be implemented by class(es) that represent
* information about stations
*
* You may change the package name for this, but you should not
* modify it in any other way.
*
*/
public interface IStationInfo {
/**
* @return the name of the station
*/
String getName();
/**
* @return x position -- 0 <= getxPos() < 256
*/
int getxPos();
/**
* @return y position -- 0 <= getyPos() < 256
*/
int getyPos();
} CHC5223 Data Structures and Algorithms 2023–2024 Semester 2
14 of 15
Appendix: breadth-first traversal, beginning with a specified start station
Let Q be an empty queue of Stations
Let L be an empty list of Stations
Add the start station to the back of Q
while Q is not empty do
Remove the Station at the front of Q, call this Station S
if S is not in list L then
Append S to L
for each station S2 that is adjacent to S do
if S2 is not in the list L then
Add S2 to the back of queue Q
endif
endfor
endif
endwhile
return L
Appendix: depth-first traversal, beginning with a specified start station.
Let S be a stack of Stations
Create an initially empty list of Stations, which we will call L
Push the start station on to the stack S
while S is not empty do
Pop the Station at the top of the stack. Call this Station T.
if T is not already in list L then
add it to the back of that list
endif
for each station T2 that is adjacent to T do
if T2 is not in the list L then
push it on to the top of the stack S
endif
endfor
endwhile
return L
CHC5223 Data Structures and Algorithms 2023–2024 Semester 2
15 of 15
Appendix: Dijkstra’s algorithm for shortest path in a network
set Closed to be empty
add all nodes in the graph to Open.
set the g-value of Start to 0, and the g-value of all the other nodes to ∞
set previous to be none for all nodes.
while End is not in Closed do
let X be the node in Open that has the lowest g-value (highest priority)
remove X from Open and add it to Closed.
if X is not equal to End then
for each node N that is adjacent to X in the graph, and also in Open do
let g’ = g-value of X + cost of edge from N to X
if g’ is less than the current g-value of N then
change the g-value of N to g’
make N’s previous pointer point to X
endif
endfor
endif
endwhile
reconstruct the shortest path from Start to End by following “previous” pointers to find the
previous node to End, the previous node to that previous node, and so on.
软件开发、广告设计客服
QQ:99515681
邮箱:99515681@qq.com
工作时间:8:00-23:00
微信:codinghelp
热点项目
更多
代做ceng0013 design of a pro...
2024-11-13
代做mech4880 refrigeration a...
2024-11-13
代做mcd1350: media studies a...
2024-11-13
代写fint b338f (autumn 2024)...
2024-11-13
代做engd3000 design of tunab...
2024-11-13
代做n1611 financial economet...
2024-11-13
代做econ 2331: economic and ...
2024-11-13
代做cs770/870 assignment 8代...
2024-11-13
代写amath 481/581 autumn qua...
2024-11-13
代做ccc8013 the process of s...
2024-11-13
代写csit040 – modern comput...
2024-11-13
代写econ 2070: introduc2on t...
2024-11-13
代写cct260, project 2 person...
2024-11-13
热点标签
mktg2509
csci 2600
38170
lng302
csse3010
phas3226
77938
arch1162
engn4536/engn6536
acx5903
comp151101
phl245
cse12
comp9312
stat3016/6016
phas0038
comp2140
6qqmb312
xjco3011
rest0005
ematm0051
5qqmn219
lubs5062m
eee8155
cege0100
eap033
artd1109
mat246
etc3430
ecmm462
mis102
inft6800
ddes9903
comp6521
comp9517
comp3331/9331
comp4337
comp6008
comp9414
bu.231.790.81
man00150m
csb352h
math1041
eengm4100
isys1002
08
6057cem
mktg3504
mthm036
mtrx1701
mth3241
eeee3086
cmp-7038b
cmp-7000a
ints4010
econ2151
infs5710
fins5516
fin3309
fins5510
gsoe9340
math2007
math2036
soee5010
mark3088
infs3605
elec9714
comp2271
ma214
comp2211
infs3604
600426
sit254
acct3091
bbt405
msin0116
com107/com113
mark5826
sit120
comp9021
eco2101
eeen40700
cs253
ece3114
ecmm447
chns3000
math377
itd102
comp9444
comp(2041|9044)
econ0060
econ7230
mgt001371
ecs-323
cs6250
mgdi60012
mdia2012
comm221001
comm5000
ma1008
engl642
econ241
com333
math367
mis201
nbs-7041x
meek16104
econ2003
comm1190
mbas902
comp-1027
dpst1091
comp7315
eppd1033
m06
ee3025
msci231
bb113/bbs1063
fc709
comp3425
comp9417
econ42915
cb9101
math1102e
chme0017
fc307
mkt60104
5522usst
litr1-uc6201.200
ee1102
cosc2803
math39512
omp9727
int2067/int5051
bsb151
mgt253
fc021
babs2202
mis2002s
phya21
18-213
cege0012
mdia1002
math38032
mech5125
07
cisc102
mgx3110
cs240
11175
fin3020s
eco3420
ictten622
comp9727
cpt111
de114102d
mgm320h5s
bafi1019
math21112
efim20036
mn-3503
fins5568
110.807
bcpm000028
info6030
bma0092
bcpm0054
math20212
ce335
cs365
cenv6141
ftec5580
math2010
ec3450
comm1170
ecmt1010
csci-ua.0480-003
econ12-200
ib3960
ectb60h3f
cs247—assignment
tk3163
ics3u
ib3j80
comp20008
comp9334
eppd1063
acct2343
cct109
isys1055/3412
math350-real
math2014
eec180
stat141b
econ2101
msinm014/msing014/msing014b
fit2004
comp643
bu1002
cm2030
联系我们
- QQ: 9951568
© 2021
www.rj363.com
软件定制开发网!