Skip to content

Commit c7f605e

Browse files
Merge pull request TheAlgorithms#1476 from shellhub/dev
Updated SinglyLinkedList
2 parents 3c07927 + e533272 commit c7f605e

File tree

5 files changed

+239
-116
lines changed

5 files changed

+239
-116
lines changed

DIRECTORY.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
* [ListAddnFun](https://github.com/TheAlgorithms/Java/blob/master/DataStructures/Lists/ListAddnFun.java)
6666
* [Merge K SortedLinkedlist](https://github.com/TheAlgorithms/Java/blob/master/DataStructures/Lists/Merge_K_SortedLinkedlist.java)
6767
* [MergeSortedArrayList](https://github.com/TheAlgorithms/Java/blob/master/DataStructures/Lists/MergeSortedArrayList.java)
68+
* [MergeSortedSinglyLinkedList](https://github.com/TheAlgorithms/Java/blob/master/DataStructures/Lists/MergeSortedSinglyLinkedList.java)
6869
* [SinglyLinkedList](https://github.com/TheAlgorithms/Java/blob/master/DataStructures/Lists/SinglyLinkedList.java)
6970
* Queues
7071
* [GenericArrayListQueue](https://github.com/TheAlgorithms/Java/blob/master/DataStructures/Queues/GenericArrayListQueue.java)
@@ -207,6 +208,8 @@
207208
* [Problem04](https://github.com/TheAlgorithms/Java/blob/master/ProjectEuler/Problem04.java)
208209
* [Problem06](https://github.com/TheAlgorithms/Java/blob/master/ProjectEuler/Problem06.java)
209210
* [Problem07](https://github.com/TheAlgorithms/Java/blob/master/ProjectEuler/Problem07.java)
211+
* [Problem09](https://github.com/TheAlgorithms/Java/blob/master/ProjectEuler/Problem09.java)
212+
* [Problem10](https://github.com/TheAlgorithms/Java/blob/master/ProjectEuler/Problem10.java)
210213

211214
## Searches
212215
* [BinarySearch](https://github.com/TheAlgorithms/Java/blob/master/Searches/BinarySearch.java)
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package DataStructures.Lists;
2+
3+
public class MergeSortedSinglyLinkedList extends SinglyLinkedList {
4+
5+
public static void main(String[] args) {
6+
SinglyLinkedList listA = new SinglyLinkedList();
7+
SinglyLinkedList listB = new SinglyLinkedList();
8+
9+
for (int i = 2; i <= 10; i += 2) {
10+
listA.insert(i);
11+
listB.insert(i - 1);
12+
}
13+
assert listA.toString().equals("2->4->6->8->10");
14+
assert listB.toString().equals("1->3->5->7->9");
15+
assert merge(listA, listB).toString().equals("1->2->3->4->5->6->7->8->9->10");
16+
}
17+
18+
/**
19+
* Merge two sorted SingleLinkedList
20+
*
21+
* @param listA the first sorted list
22+
* @param listB the second sored list
23+
* @return merged sorted list
24+
*/
25+
public static SinglyLinkedList merge(SinglyLinkedList listA, SinglyLinkedList listB) {
26+
Node headA = listA.getHead();
27+
Node headB = listB.getHead();
28+
29+
int size = listA.size() + listB.size();
30+
31+
Node head = new Node();
32+
Node tail = head;
33+
while (headA != null && headB != null) {
34+
if (headA.value <= headB.value) {
35+
tail.next = headA;
36+
headA = headA.next;
37+
} else {
38+
tail.next = headB;
39+
headB = headB.next;
40+
}
41+
tail = tail.next;
42+
}
43+
if (headA == null) {
44+
tail.next = headB;
45+
}
46+
if (headB == null) {
47+
tail.next = headA;
48+
}
49+
return new SinglyLinkedList(head.next, size);
50+
}
51+
}

0 commit comments

Comments
 (0)