Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit b0ddd37

Browse files
author
10kartik
committed
Added Middle of LL function and tests
1 parent e931a4c commit b0ddd37

File tree

2 files changed

+53
-17
lines changed

2 files changed

+53
-17
lines changed
Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,27 @@
11
/**
2-
* A LinkedList based solution for Detect a Cycle in a list
2+
* A LinkedList based solution for finding middle node of linked list.
33
* https://afteracademy.com/blog/middle-of-the-linked-list
44
*/
5-
6-
functionmain() {
5+
classMiddleOfLL{
6+
solution(head) {
77
/*
88
Problem Statement:
99
Given the head of a singly linked list, return the middle node of the linked list.
1010
If there are two middle nodes, return the second middle node.
1111
12-
Note:
13-
* While Solving the problem in given link below, don't use main() function.
14-
* Just use only the code inside main() function.
15-
* The purpose of using main() function here is to avoid global variables.
16-
1712
Link for the Problem: https://leetcode.com/problems/middle-of-the-linked-list/
1813
*/
19-
const head = '' // Reference to head is given in the problem. So please ignore this line
20-
let fast = head
21-
let slow = head
14+
let fast = head
15+
let slow = head
2216

23-
if (head.next == null) { return head }
17+
if (head.next == null) { return head }
2418

25-
while (fast != null && fast.next != null) {
26-
fast = fast.next.next
27-
slow = slow.next
19+
while (fast != null && fast.next != null) {
20+
fast = fast.next.next
21+
slow = slow.next
22+
}
23+
return slow
2824
}
29-
return slow
3025
}
3126

32-
main()
27+
export{MiddleOfLL}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import { MiddleOfLL } from '../MiddleOfLinkedList'
2+
import { LinkedList } from '../SinglyLinkedList'
3+
4+
describe('MiddleOfLinkedList', () => {
5+
it('middle node Of linked list - even length ', () => {
6+
const list = new LinkedList()
7+
list.addFirst(1)
8+
list.addLast(2)
9+
list.addLast(3)
10+
list.addLast(4)
11+
list.addLast(5)
12+
list.addLast(6)
13+
list.addLast(7)
14+
15+
const MiddleNodeOfLinkedList = new MiddleOfLL().solution(list.headNode)
16+
expect(MiddleNodeOfLinkedList.data).toEqual(4)
17+
})
18+
19+
it('middle node of linked list - odd length ', () => {
20+
const list = new LinkedList()
21+
list.addFirst(10)
22+
list.addLast(20)
23+
list.addLast(30)
24+
list.addLast(40)
25+
list.addLast(50)
26+
list.addLast(60)
27+
list.addLast(70)
28+
list.addLast(80)
29+
30+
const MiddleNodeOfLinkedList = new MiddleOfLL().solution(list.headNode)
31+
expect(MiddleNodeOfLinkedList.data).toEqual(50)
32+
})
33+
34+
it('middle node of linked list - length 1 ', () => {
35+
const list = new LinkedList()
36+
list.addFirst(100)
37+
38+
const MiddleNodeOfLinkedList = new MiddleOfLL().solution(list.headNode)
39+
expect(MiddleNodeOfLinkedList.data).toEqual(100)
40+
})
41+
})

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /