FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
Java/DataStructures/Lists/CircleLinkedList.java at master · loisoft/Java · GitHub
loisoft
/
Java
Public
forked from
TheAlgorithms/Java
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
Java
/
DataStructures
/
Lists
/
CircleLinkedList.java
Copy path
More file actions
More file actions
Latest commit
History
History
History
65 lines (58 loc) · 1.96 KB
Breadcrumbs
Java
/
DataStructures
/
Lists
/
CircleLinkedList.java
Copy path
File metadata and controls
65 lines (58 loc) · 1.96 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
package
DataStructures
.
Lists
;
public
class
CircleLinkedList
<
E
> {
private
static
class
Node
<
E
> {
Node
<
E
>
next
;
E
value
;
private
Node
(
E
value
,
Node
<
E
>
next
) {
this
.
value
=
value
;
this
.
next
=
next
;
}
}
// For better O.O design this should be private allows for better black box design
private
int
size
;
// this will point to dummy node;
private
Node
<
E
>
head
=
null
;
// constructer for class.. here we will make a dummy node for circly linked list implementation
// with reduced error catching as our list will never be empty;
public
CircleLinkedList
() {
// creation of the dummy node
head
=
new
Node
<
E
>(
null
,
head
);
size
=
0
;
}
// getter for the size... needed because size is private.
public
int
getSize
() {
return
size
;
}
// for the sake of simplistiy this class will only contain the append function or addLast other
// add functions can be implemented however this is the basses of them all really.
public
void
append
(
E
value
) {
if
(
value
==
null
) {
// we do not want to add null elements to the list.
throw
new
NullPointerException
(
"Cannot add null element to the list"
);
}
// head.next points to the last element;
head
.
next
=
new
Node
<
E
>(
value
,
head
);
size
++;
}
public
E
remove
(
int
pos
) {
if
(
pos
>
size
||
pos
<
0
) {
// catching errors
throw
new
IndexOutOfBoundsException
(
"position cannot be greater than size or negative"
);
}
// we need to keep track of the element before the element we want to remove we can see why
// bellow.
Node
<
E
>
before
=
head
;
for
(
int
i
=
1
;
i
<=
pos
;
i
++) {
before
=
before
.
next
;
}
Node
<
E
>
destroy
=
before
.
next
;
E
saved
=
destroy
.
value
;
// assigning the next reference to the the element following the element we want to remove...
// the last element will be assigned to the head.
before
.
next
=
before
.
next
.
next
;
// scrubbing
destroy
=
null
;
size
--;
return
saved
;
}
}
Back
|
FazBrowse Home
|
New Git URL