From 17c522f2ac2708881ce9880dd5cd11342a740fad Mon Sep 17 00:00:00 2001 From: Shivani Yadav <137782859+shivani51yadav@users.noreply.github.com> Date: Mon, 16 Oct 2023 12:24:43 +0530 Subject: [PATCH 1/2] Adding the Stack Data Structure --- DIRECTORY.md | 2 + DataStructures/Stack.php | 85 ++++++++++++++++++++++ tests/DataStructures/StackTest.php | 110 +++++++++++++++++++++++++++++ 3 files changed, 197 insertions(+) create mode 100644 DataStructures/Stack.php create mode 100644 tests/DataStructures/StackTest.php diff --git a/DIRECTORY.md b/DIRECTORY.md index d6df201e..01799f61 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -20,6 +20,7 @@ * [Doublylinkedlist](./DataStructures/DoublyLinkedList.php) * [Node](./DataStructures/Node.php) * [Singlylinkedlist](./DataStructures/SinglyLinkedList.php) + * [Stack](./DataStructures/Stack.php) ## Graphs * [Breadthfirstsearch](./Graphs/BreadthFirstSearch.php) @@ -102,6 +103,7 @@ * Datastructures * [Doublylinkedlisttest](./tests/DataStructures/DoublyLinkedListTest.php) * [Singlylinkedlisttest](./tests/DataStructures/SinglyLinkedListTest.php) + * [Stacktest](./tests/DataStructures/StackTest.php) * Graphs * [Breadthfirstsearchtest](./tests/Graphs/BreadthFirstSearchTest.php) * [Depthfirstsearchtest](./tests/Graphs/DepthFirstSearchTest.php) diff --git a/DataStructures/Stack.php b/DataStructures/Stack.php new file mode 100644 index 00000000..6c2c8375 --- /dev/null +++ b/DataStructures/Stack.php @@ -0,0 +1,85 @@ +stack = $array; + } + + public function __destruct() + { + unset($this->stack); + } + + + public function push($data): void + { + array_push($this->stack, $data); + } + + public function pop() + { + return array_pop($this->stack); + } + + public function peek() + { + return $this->stack[count($this->stack) - 1]; + } + + public function isEmpty(): bool + { + return empty($this->stack); + } + + public function print(): void + { + echo implode(', ', $this->stack); + } + + public function __toString(): string + { + return implode(', ', $this->stack); + } + + public function length(): int + { + return count($this->stack); + } + + public function clear(): void + { + $this->stack = []; + } + + public function search($data): int + { + return array_search($data, $this->stack); + } + + public function toArray(): array + { + return $this->stack; + } + + public function fromArray(array $array): void + { + $this->stack = $array; + } + + public function reverse(): void + { + $this->stack = array_reverse($this->stack); + } + + public function sort(): void + { + sort($this->stack); + } +} diff --git a/tests/DataStructures/StackTest.php b/tests/DataStructures/StackTest.php new file mode 100644 index 00000000..a4e85588 --- /dev/null +++ b/tests/DataStructures/StackTest.php @@ -0,0 +1,110 @@ +assertEquals([1, 2, 3], $stack->toArray()); + } + + public function testDestruct() + { + $stack = new Stack([1, 2, 3]); + unset($stack); + $this->expectNotToPerformAssertions(); + } + + public function testPush() + { + $stack = new Stack(); + $stack->push(1); + $stack->push(2); + $stack->push(3); + $this->assertEquals([1, 2, 3], $stack->toArray()); + } + + public function testPop() + { + $stack = new Stack([1, 2, 3]); + $this->assertEquals(3, $stack->pop()); + $this->assertEquals([1, 2], $stack->toArray()); + } + + public function testPeek() + { + $stack = new Stack([1, 2, 3]); + $this->assertEquals(3, $stack->peek()); + } + + public function testIsEmpty() + { + $stack = new Stack(); + $this->assertTrue($stack->isEmpty()); + } + + public function testPrint() + { + $stack = new Stack([1, 2, 3]); + $this->expectOutputString("1, 2, 3"); + $stack->print(); + } + + public function testToString() + { + $stack = new Stack([1, 2, 3]); + $this->expectOutputString("1, 2, 3"); + echo $stack; + } + + public function testLength() + { + $stack = new Stack([1, 2, 3]); + $this->assertEquals(3, $stack->length()); + } + + public function testClear() + { + $stack = new Stack([1, 2, 3]); + $stack->clear(); + $this->assertEquals([], $stack->toArray()); + } + + public function testSearch() + { + $stack = new Stack([1, 2, 3]); + $this->assertEquals(2, $stack->search(3)); + } + + public function testToArray() + { + $stack = new Stack([1, 2, 3]); + $this->assertEquals([1, 2, 3], $stack->toArray()); + } + + public function testFromArray() + { + $stack = new Stack(); + $stack->fromArray([1, 2, 3]); + $this->assertEquals([1, 2, 3], $stack->toArray()); + } + + public function testReverse() + { + $stack = new Stack([1, 2, 3]); + $stack->reverse(); + $this->assertEquals([3, 2, 1], $stack->toArray()); + } + + public function testSort() + { + $stack = new Stack([3, 2, 1]); + $stack->sort(); + $this->assertEquals([1, 2, 3], $stack->toArray()); + } +} From b8d7137321ecee84851e653cfc257f40e542e4c4 Mon Sep 17 00:00:00 2001 From: Shivani Yadav <137782859+shivani51yadav@users.noreply.github.com> Date: Mon, 23 Oct 2023 09:19:24 +0530 Subject: [PATCH 2/2] Fixing the Lint Issue --- DataStructures/Stack.php | 170 +++++++++++----------- tests/DataStructures/StackTest.php | 220 ++++++++++++++--------------- 2 files changed, 195 insertions(+), 195 deletions(-) diff --git a/DataStructures/Stack.php b/DataStructures/Stack.php index 6c2c8375..eaeb7c58 100644 --- a/DataStructures/Stack.php +++ b/DataStructures/Stack.php @@ -1,85 +1,85 @@ -stack = $array; - } - - public function __destruct() - { - unset($this->stack); - } - - - public function push($data): void - { - array_push($this->stack, $data); - } - - public function pop() - { - return array_pop($this->stack); - } - - public function peek() - { - return $this->stack[count($this->stack) - 1]; - } - - public function isEmpty(): bool - { - return empty($this->stack); - } - - public function print(): void - { - echo implode(', ', $this->stack); - } - - public function __toString(): string - { - return implode(', ', $this->stack); - } - - public function length(): int - { - return count($this->stack); - } - - public function clear(): void - { - $this->stack = []; - } - - public function search($data): int - { - return array_search($data, $this->stack); - } - - public function toArray(): array - { - return $this->stack; - } - - public function fromArray(array $array): void - { - $this->stack = $array; - } - - public function reverse(): void - { - $this->stack = array_reverse($this->stack); - } - - public function sort(): void - { - sort($this->stack); - } -} +stack = $array; + } + + public function __destruct() + { + unset($this->stack); + } + + + public function push($data): void + { + array_push($this->stack, $data); + } + + public function pop() + { + return array_pop($this->stack); + } + + public function peek() + { + return $this->stack[count($this->stack) - 1]; + } + + public function isEmpty(): bool + { + return empty($this->stack); + } + + public function print(): void + { + echo implode(', ', $this->stack); + } + + public function __toString(): string + { + return implode(', ', $this->stack); + } + + public function length(): int + { + return count($this->stack); + } + + public function clear(): void + { + $this->stack = []; + } + + public function search($data): int + { + return array_search($data, $this->stack); + } + + public function toArray(): array + { + return $this->stack; + } + + public function fromArray(array $array): void + { + $this->stack = $array; + } + + public function reverse(): void + { + $this->stack = array_reverse($this->stack); + } + + public function sort(): void + { + sort($this->stack); + } +} diff --git a/tests/DataStructures/StackTest.php b/tests/DataStructures/StackTest.php index a4e85588..7f1c44be 100644 --- a/tests/DataStructures/StackTest.php +++ b/tests/DataStructures/StackTest.php @@ -1,110 +1,110 @@ -assertEquals([1, 2, 3], $stack->toArray()); - } - - public function testDestruct() - { - $stack = new Stack([1, 2, 3]); - unset($stack); - $this->expectNotToPerformAssertions(); - } - - public function testPush() - { - $stack = new Stack(); - $stack->push(1); - $stack->push(2); - $stack->push(3); - $this->assertEquals([1, 2, 3], $stack->toArray()); - } - - public function testPop() - { - $stack = new Stack([1, 2, 3]); - $this->assertEquals(3, $stack->pop()); - $this->assertEquals([1, 2], $stack->toArray()); - } - - public function testPeek() - { - $stack = new Stack([1, 2, 3]); - $this->assertEquals(3, $stack->peek()); - } - - public function testIsEmpty() - { - $stack = new Stack(); - $this->assertTrue($stack->isEmpty()); - } - - public function testPrint() - { - $stack = new Stack([1, 2, 3]); - $this->expectOutputString("1, 2, 3"); - $stack->print(); - } - - public function testToString() - { - $stack = new Stack([1, 2, 3]); - $this->expectOutputString("1, 2, 3"); - echo $stack; - } - - public function testLength() - { - $stack = new Stack([1, 2, 3]); - $this->assertEquals(3, $stack->length()); - } - - public function testClear() - { - $stack = new Stack([1, 2, 3]); - $stack->clear(); - $this->assertEquals([], $stack->toArray()); - } - - public function testSearch() - { - $stack = new Stack([1, 2, 3]); - $this->assertEquals(2, $stack->search(3)); - } - - public function testToArray() - { - $stack = new Stack([1, 2, 3]); - $this->assertEquals([1, 2, 3], $stack->toArray()); - } - - public function testFromArray() - { - $stack = new Stack(); - $stack->fromArray([1, 2, 3]); - $this->assertEquals([1, 2, 3], $stack->toArray()); - } - - public function testReverse() - { - $stack = new Stack([1, 2, 3]); - $stack->reverse(); - $this->assertEquals([3, 2, 1], $stack->toArray()); - } - - public function testSort() - { - $stack = new Stack([3, 2, 1]); - $stack->sort(); - $this->assertEquals([1, 2, 3], $stack->toArray()); - } -} +assertEquals([1, 2, 3], $stack->toArray()); + } + + public function testDestruct() + { + $stack = new Stack([1, 2, 3]); + unset($stack); + $this->expectNotToPerformAssertions(); + } + + public function testPush() + { + $stack = new Stack(); + $stack->push(1); + $stack->push(2); + $stack->push(3); + $this->assertEquals([1, 2, 3], $stack->toArray()); + } + + public function testPop() + { + $stack = new Stack([1, 2, 3]); + $this->assertEquals(3, $stack->pop()); + $this->assertEquals([1, 2], $stack->toArray()); + } + + public function testPeek() + { + $stack = new Stack([1, 2, 3]); + $this->assertEquals(3, $stack->peek()); + } + + public function testIsEmpty() + { + $stack = new Stack(); + $this->assertTrue($stack->isEmpty()); + } + + public function testPrint() + { + $stack = new Stack([1, 2, 3]); + $this->expectOutputString("1, 2, 3"); + $stack->print(); + } + + public function testToString() + { + $stack = new Stack([1, 2, 3]); + $this->expectOutputString("1, 2, 3"); + echo $stack; + } + + public function testLength() + { + $stack = new Stack([1, 2, 3]); + $this->assertEquals(3, $stack->length()); + } + + public function testClear() + { + $stack = new Stack([1, 2, 3]); + $stack->clear(); + $this->assertEquals([], $stack->toArray()); + } + + public function testSearch() + { + $stack = new Stack([1, 2, 3]); + $this->assertEquals(2, $stack->search(3)); + } + + public function testToArray() + { + $stack = new Stack([1, 2, 3]); + $this->assertEquals([1, 2, 3], $stack->toArray()); + } + + public function testFromArray() + { + $stack = new Stack(); + $stack->fromArray([1, 2, 3]); + $this->assertEquals([1, 2, 3], $stack->toArray()); + } + + public function testReverse() + { + $stack = new Stack([1, 2, 3]); + $stack->reverse(); + $this->assertEquals([3, 2, 1], $stack->toArray()); + } + + public function testSort() + { + $stack = new Stack([3, 2, 1]); + $stack->sort(); + $this->assertEquals([1, 2, 3], $stack->toArray()); + } +}