Skip to content

Commit 4b93f18

Browse files
committed
Add linkedlist methods
1 parent 927d510 commit 4b93f18

File tree

2 files changed

+117
-2
lines changed

2 files changed

+117
-2
lines changed

Diff for: src/java1/datastructures/linkedlist/LinkedList.java

+90
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,96 @@ public Node removeLast() {
4242
return temp;
4343
}
4444

45+
public void prepend(int value) {
46+
Node newNode = new Node(value);
47+
if(length == 0) {
48+
head = newNode;
49+
tail = newNode;
50+
} else {
51+
newNode.next = head;
52+
head = newNode;
53+
}
54+
this.length++;
55+
}
56+
57+
public Node removeFirst() {
58+
if(length == 0) return null;
59+
Node temp = head;
60+
head = head.next;
61+
temp.next = null;
62+
this.length--;
63+
if(length == 0) {
64+
tail = null;
65+
}
66+
return temp;
67+
}
68+
69+
public Node get(int index) {
70+
if(index < 0 || index >= length) return null;
71+
Node temp = head;
72+
for(int i=1; i<= index; i++) {
73+
temp = temp.next;
74+
}
75+
return temp;
76+
}
77+
78+
public boolean set(int index, int value) {
79+
Node temp = get(index);
80+
if(temp != null) {
81+
temp.value = value;
82+
return true;
83+
}
84+
return false;
85+
}
86+
87+
public boolean insert(int index, int value) {
88+
if(index < 0 || index > length) return false;
89+
90+
if(index == 0) {
91+
prepend(value);
92+
return true;
93+
}
94+
if(index == length) {
95+
append(value);
96+
return true;
97+
}
98+
Node newNode = new Node(value);
99+
Node prevNode = get(index-1);
100+
newNode.next = prevNode.next;
101+
prevNode.next = newNode;
102+
length++;
103+
return true;
104+
}
105+
106+
public Node remove(int index) {
107+
if(index < 0 || index >= length) return null;
108+
if(index == 0) return removeFirst();
109+
if(index == length -1) return removeLast();
110+
111+
Node prevNode = get(index-1);
112+
Node removedNode = prevNode.next;
113+
prevNode.next = removedNode.next;
114+
removedNode.next = null;
115+
length--;
116+
return removedNode;
117+
}
118+
119+
public void reverse() {
120+
if(length == 0) return;
121+
Node temp = head;
122+
head = tail;
123+
tail = temp;
124+
Node after = temp.next;
125+
Node before = null;
126+
127+
for(int i=0; i< length; i++){
128+
after = temp.next;
129+
temp.next = before;
130+
before = temp;
131+
temp = after;
132+
}
133+
}
134+
45135
public void printList() {
46136
Node temp = head;
47137
while(temp != null) {

Diff for: src/java1/datastructures/linkedlist/Main.java

+27-2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
public class Main {
44
public static void main(String[] args) {
5-
LinkedList myLinkedList = new LinkedList(1);
5+
LinkedList myLinkedList = new LinkedList(2);
66
//Append
7-
myLinkedList.append(2);
87
myLinkedList.append(3);
8+
myLinkedList.append(4);
99

1010
myLinkedList.printList();
1111
//RemoveLast
@@ -14,6 +14,31 @@ public static void main(String[] args) {
1414
System.out.println(myLinkedList.removeLast().value);
1515
System.out.println(myLinkedList.removeLast());
1616
//Prepend
17+
myLinkedList.prepend(1);
18+
myLinkedList.prepend(0);
19+
//Get
20+
System.out.println(myLinkedList.get(1).value);
21+
System.out.println(myLinkedList.get(-1));
22+
//Set
23+
System.out.println(myLinkedList.set(1, 2));
24+
System.out.println(myLinkedList.set(0, 1));
25+
System.out.println(myLinkedList.set(2, 3));
26+
myLinkedList.printList();
1727
//RemoveFirst
28+
System.out.println(myLinkedList.removeFirst().value);
29+
System.out.println(myLinkedList.removeFirst().value);
30+
System.out.println(myLinkedList.removeFirst());
31+
//Insert at index
32+
myLinkedList.append(1);
33+
myLinkedList.append(3);
34+
System.out.println(myLinkedList.insert(1, 2));
35+
System.out.println(myLinkedList.insert(3, 4));
36+
myLinkedList.printList();
37+
//Remove at index
38+
System.out.println(myLinkedList.remove(2).value);
39+
myLinkedList.printList();
40+
//Reverse
41+
myLinkedList.reverse();
42+
myLinkedList.printList();
1843
}
1944
}

0 commit comments

Comments
 (0)