-
Notifications
You must be signed in to change notification settings - Fork 0
/
A1083341_checkpoint7_RouteLinkedList.java
149 lines (145 loc) · 6.87 KB
/
A1083341_checkpoint7_RouteLinkedList.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
public class A1083341_checkpoint7_RouteLinkedList{
private A1083341_checkpoint7_Node head;
//Description : the constructor of leading the head Node as null.
public A1083341_checkpoint7_RouteLinkedList(){
this.head = null;
}
//Description : the constructor of input a Node as the head node.
public A1083341_checkpoint7_RouteLinkedList(A1083341_checkpoint7_Node head){
this.head = head;
}
public void delete(int axis, int direction){
/*********************************The TODO This Time (Checkpoint7)***************************
//TODO(7): Input value of Node as the reference Node,
// you have to delete the first Node that is same as the reference Node,
// and connect the following one and the previous one.
/********************************************************************************************
START OF YOUR CODE
********************************************************************************************/
A1083341_checkpoint7_Node prev = null;
A1083341_checkpoint7_Node current = head;
if(head == null){
//empty list;
}else{
while(current.getNext()!=null && (current.getAxis()!=axis || current.getDirection()!=direction)){
prev = current;
current = current.getNext();
}
if(current.getAxis()==axis && current.getDirection()==direction){
if(prev == null){
head = current.getNext();
}else{
prev.setNext(current.getNext());
}
}else{
//not in the list;
}
}
/********************************************************************************************
END OF YOUR CODE
********************************************************************************************/
}
public A1083341_checkpoint7_Node search(int axis, int direction){
/*******************************The TODO This Time (Checkpoint7)*****************************
//TODO(8): Input value of Node as the reference Node,
// you have to find the first Node that is same as the reference Node,
// and return it.
/********************************************************************************************
START OF YOUR CODE
********************************************************************************************/
A1083341_checkpoint7_Node prev = null;
A1083341_checkpoint7_Node current = head;
if(head == null){
return null;
}else{
while(current.getNext()!=null && (current.getAxis()!=axis || current.getDirection()!=direction)){
prev = current;
current = current.getNext();
}
if(current.getAxis()==axis && current.getDirection()==direction){
return current;
}
return null;
}
/********************************************************************************************
END OF YOUR CODE
********************************************************************************************/
}
public void insert(int referenceAxis, int referenceDirection, int axis, int direction){
/******************************The TODO This Time (Checkpoint7)******************************
//TODO(9): Input value of Node as the reference Node,
// and insert a Node BEFORE the first Node same as the reference Node,
// and connect the following one and the previous one.
//Hint The value of the Node is int variable axis and dirsction.
//Hint2 If there is no reference node in linkedlist, print "Insertion null".
/********************************************************************************************
START OF YOUR CODE
********************************************************************************************/
A1083341_checkpoint7_Node prev = null;
A1083341_checkpoint7_Node current = head;
A1083341_checkpoint7_Node newNode = new A1083341_checkpoint7_Node(direction,axis);
if(head == null){
head = newNode;
}else {
while(current.getNext() != null && (current.getAxis()!=referenceAxis || current.getDirection()!=referenceDirection)){
prev = current;
current=current.getNext();
}
if(current.getAxis()==referenceAxis && current.getDirection()==referenceDirection){
if(prev == null){
newNode.setNext(current);
head = newNode;
}else{
prev.setNext(newNode);
newNode.setNext(current);
}
}else{
System.out.println("Insertion null");
}
}
/********************************************************************************************
END OF YOUR CODE
********************************************************************************************/
}
public int length(){
/******************************The TODO This Time (Checkpoint7)******************************
//TODO(10): return how long the LinkedList is.
/********************************************************************************************
START OF YOUR CODE
********************************************************************************************/
A1083341_checkpoint7_Node current = head;
int count = 0;
//A1083341_checkpoint7_Node newNode = new A1083341_checkpoint7_Node(direction,axis);
if(head == null){
return count;
}else {
count+=1;
while(current.getNext() != null){
count+=1;
current=current.getNext();
}
return count;
}
/********************************************************************************************
END OF YOUR CODE
********************************************************************************************/
}
public void append(int axis, int direction){
A1083341_checkpoint7_Node current = head;
A1083341_checkpoint7_Node newNode = new A1083341_checkpoint7_Node(direction,axis);
if(head == null){
head = newNode;
}else {
while(current.getNext() != null){
current=current.getNext();
}
current.setNext(newNode);
}
}
public A1083341_checkpoint7_Node getHead(){
return this.head;
}
public void setHead(A1083341_checkpoint7_Node head){
this.head = head;
}
}