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 bd15e6e

Browse files
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‎

Lines changed: 1 addition & 0 deletions
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)
Lines changed: 15 additions & 0 deletions
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+
};
Lines changed: 37 additions & 0 deletions
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)

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