Skip to content

Commit bd15e6e

Browse files
authored
Merge pull request knaxus#20 from ulasaydin/master
Added Reverse Linked List Problem.
2 parents aae5ade + dd2c796 commit bd15e6e

File tree

3 files changed

+53
-0
lines changed

3 files changed

+53
-0
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ Collection of interview questions with Unit Tests. Problems includes Data Struct
1717
- [N Element From Last](src/_DataStructures_/LinkedList/element-from-last)
1818
- [Middle Node](src/_DataStructures_/LinkedList/middle-node)
1919
- [Detect Loop](src/_DataStructures_/LinkedList/loop-in-list)
20+
- [Reverse Linked List](src/_DataStructures_/LinkedList/reverse-linked-list)
2021
- [Stack](src/_DataStructures_/Stack)
2122
- [Implement Queue Using Stack](src/_DataStructures_/Stack/immitate-queue-using-stack)
2223
- [Baseball Game](src/_DataStructures_/Stack/baseball-game)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
function reverseLinkedList(linkedList) {
2+
let next = linkedList.getFirst();
3+
let current = null;
4+
let prev;
5+
while(next != null){
6+
prev = current;
7+
current = next;
8+
next = next.next;
9+
current.next = prev;
10+
}
11+
return current;
12+
};
13+
module.exports = {
14+
reverseLinkedList,
15+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
const { LinkedList } = require('../index');
2+
const { reverseLinkedList } = require('.');
3+
4+
describe('Reverse a LinkedList', () => {
5+
let list = null;
6+
beforeEach(() => {
7+
list = new LinkedList();
8+
list.addAtBeginning('1');
9+
list.addAtEnd('2');
10+
list.addAtEnd('3');
11+
list.addAtEnd('4');
12+
list.addAtEnd('5');
13+
});
14+
15+
it('Should return `null` for empty list', () => {
16+
list.delete();
17+
expect(reverseLinkedList(list)).toEqual(null);
18+
});
19+
20+
it('Should return `5`->`4`->`3`->`2`->`1` for the given list', () => {
21+
let reversedList = reverseLinkedList(list);
22+
expect(reversedList.data).toEqual('5');
23+
expect(reversedList.next.data).toEqual('4');
24+
expect(reversedList.next.next.data).toEqual('3');
25+
expect(reversedList.next.next.next.data).toEqual('2');
26+
expect(reversedList.next.next.next.next.data).toEqual('1');
27+
});
28+
29+
it('Should return `3`->`2`->`1` after deleting 2 last nodes of the list', () => {
30+
list.removeFromEnd();
31+
list.removeFromEnd();
32+
let reversedList2 = reverseLinkedList(list);
33+
expect(reversedList2.data).toEqual('3');
34+
expect(reversedList2.next.data).toEqual('2');
35+
expect(reversedList2.next.next.data).toEqual('1');
36+
});
37+
});

0 commit comments

Comments
 (0)