FAQ: Stacks: Conceptual - Stacks Implementation

This community-built FAQ covers the “Stacks Implementation” exercise from the lesson “Stacks: Conceptual”.

Paths and Courses
This exercise can be found in the following Codecademy content:

Computer Science

Linear Data Structures

FAQs on the exercise Stacks Implementation

There are currently no frequently asked questions associated with this exercise – that’s where you come in! You can contribute to this section by offering your own questions, answers, or clarifications on this exercise. Ask or answer a question by clicking reply (reply) below.

If you’ve had an “aha” moment about the concepts, formatting, syntax, or anything else with this exercise, consider sharing those insights! Teaching others and answering their questions is one of the best ways to learn and stay sharp.

Join the Discussion. Help a fellow learner on their journey.

Ask or answer a question about this exercise by clicking reply (reply) below!

Agree with a comment or answer? Like (like) to up-vote the contribution!

Need broader help or resources? Head here.

Looking for motivation to keep learning? Join our wider discussions.

Learn more about how to use this guide.

Found a bug? Report it!

Have a question about your account or billing? Reach out to our customer support team!

None of the above? Find out where to ask other questions here!

Hi,

I was pondering over the question asked: “Why would a Stack be implemented using a Linked List rather than an Array or List?”.

And in Python, it seems to me that it shouldn’t. The list object in Python can already behave as a stack in an optimized fashion, so I don’t know why we would use a linked list which requires creating new objects and methods to do the same task.

It’s also what you find in the Python documentation:

https://docs.python.org/3/tutorial/datastructures.html#using-lists-as-stacks

So except for cases where you want a specific kind of stack, I don’t know why we would use a linked list for our stack, am I missing something?

11 Likes

I believe that the method of stacking is taught here to introduce us to the algorithm. Apart from that it is probably suppose to optimize memory because with lists not only are we allocating data but we are also keeping track of its position in the list. With a stack with are allocating data and pointing to the next data. It seems really arbitrary to be honest, but it was thought up for a reason.

i have the same question really why should i use linked_lists rather than lists !! and i have another question if i’m implementing stacks with linked lists why should i put a limit to it’s size ? what i know is that linked_lists isn’t sequential in memory so you don’t have to set it’s size when use it and that is why linked_lists is a good removal and insertion so you can freely add nodes or remove em anytime and anywhere .
so how can i kill the best advantage of the linked lists and give it a size !! why should i if i can easy add or remove nodes at anytime … if i have to give it a size so array will be better then . and using linked_lists for stacks is really a bad choice .
and that will back us to the first question why we can’t easily use lists which already implemented in python !
i think i misunderstand smth…

i believe it is regarding the big O notation.
An array list has a set sized and inserting or deleting is difficult. However, indexing is 0(1).
A single linked list can easily remove nodes on top like a stack with 0(1), although finding a node is 0(n).

where 0 is talking about the speed.

This is a stack. You have the index of the element that is the top of the stack. Adding an element by index to the array is O(1). Deleting is just decreasing the index.