Lety Palomo -Pine C-16 queue and stack project#57
Lety Palomo -Pine C-16 queue and stack project#57letypl12 wants to merge 1 commit intoAda-C16:masterfrom
Conversation
kyra-patton
left a comment
There was a problem hiding this comment.
💫Hi Lety, your implementations were largely solid, but I did leave a few comments for you to take a look at.
For the comprehension questions. I'm looking for a bit more in the definition of an ADT. An abstract data type is a data type is defined by its behavior rather than its implementation.
A stack's five methods do include push, pop, and is_empty like you mentioned, but rather than is_full they also may include peek and size.
For a queue, the five methods are going to be enqueue, dequeue, is_empty, front, and rear.
Using something does get you the benefits of something that's already created, you're correct, but we reap those benefits by say, calling a function someone else implemented or importing a library. Implementing is not so much applying something, but writing the code yourself.
Let me know what questions you have.
🟢
| self.rear = 0 | ||
|
|
||
| #per the test, don't duplicate the item if it was just enqueued | ||
| if self.store[(self.rear - 1 ) % self.buffer_size] != element: |
There was a problem hiding this comment.
🤔 I'm curious which test caused you to add this clause here. It shouldn't be necessary
There was a problem hiding this comment.
I went through lots of iterations to debug the tests. This is leftovers lol!
| @@ -23,39 +23,88 @@ def enqueue(self, element): | |||
| In the store are occupied | |||
| returns None | |||
| """ Removes and returns an element from the Queue | ||
| Raises a QueueEmptyException if | ||
| The Queue is empty. | ||
| """ |
| """ | ||
| pass | ||
|
|
||
| return self.store[self.front] |
| The Queue | ||
| """ | ||
| pass | ||
| return self.size |
| """ Returns the Queue in String form like: | ||
| [3, 4, 7] | ||
| Starting with the front of the Queue and | ||
| ending with the rear of the Queue. |
| Returns None | ||
| """ | ||
| pass | ||
| return self.store.add_first(element) |
| if self.store.length == 0: | ||
| raise StackEmptyException ("stack is empty") | ||
|
|
||
| return self.store.remove_first() |
| self.store.length = 0 | ||
| if self.store.length == 0: | ||
| return True | ||
| return False |
There was a problem hiding this comment.
🤔 I'm not sure this works... it will always return True since you set the length to 0 on line 37.
| self.store.length = 0 | |
| if self.store.length == 0: | |
| return True | |
| return False | |
| if self.store.length == 0: | |
| return True | |
| return False |
| ending with the bottom of the Stack. | ||
| """ | ||
| pass | ||
| return self.store.__str__ |
There was a problem hiding this comment.
The__str__ method is an example of what we call operator overloading. The str method is built-in for all data types (even classes you create) in Python. When we want the str method to do something different than the default built-in behavior, we can 'overload' the function by implementing new behavior under the __str__ method. However when we call the function, we still use str without the dunders.
You can also do this with other built in operators and functions. For example, you can override the behavior of the == operator with __eq__
| return self.store.__str__ | |
| return str(self.store) |
Stacks and Queues
Thanks for doing some brain yoga. You are now submitting this assignment!
Comprehension Questions
OPTIONAL JobSimulation