## Sunday, May 22, 2011

### Implement a basic Stack using linked List

Implementing a stack using linked list is the a very basic application of the linked list data structure. It tests your ability to visualize the usage of a complex data structure (such as a Stack) in terms of a more primitive data structure such as a linked list. Stack is a LIFO (Last In First Out) structure. That means that the last element in is the first element out. In programming terms, that means that you insert new elements at the top of the list and you remove elements from the top too. Simple, right?

First, let's define our linked list data structure. This is the same as in our previous examples:

`typedef struct linked_list{    int data;    struct linked_list *next;} Node;`

For us to be able to test our code, we need to define a way to display our stack. There are multiple ways to display the stack – you can use a loop (do-while) or you can use recursion. Guess what? We have already covered recursion. So let's try recursion to display the stack.

`// recursively display the contents // of the stackvoid DisplayStack(Node* currentNode){    // recursive termination condition    if (currentNode == NULL)    {        return;    }    // the node is not null    // display the data    printf(" -> %d", currentNode->data);    // recursively call the display to     // display the next element in the stack    DisplayStack(currentNode->next);}`

Now that we have figured out the display, let's check out the code for pushing an element onto the stack.

`// push item on the stack// this is same as adding a node// at the top of the listvoid Push(int dataToAdd){    // assumption: head is already defined elsewhere in the program    // 1. create the new node    Node *temp = new Node;    temp->data = dataToAdd;    // 2. insert it at the first position    temp->next = head;    // 3. update the head to point to this new node    head = temp;}`

As it is evident from the function above, adding new elements on the stack is fairly intuitive and simple. Now let's tackle the last part of the Stack structure: popping an element of the stack. It is equally simple. You remove the first (head) element from the linked list. The only caveat here is that you have to take care of empty list.

`// pop an element from the stack// this is same as removing the first element // from the listNode* Pop(){    // check for empty list    if (head == NULL)    {        printf("Stack is empty\n");        return NULL;    }            // get the top node    Node *firstNode = head;    // move the head     head = head->next;            // disconnect the node     // from the list    firstNode->next = NULL;    // return the top node    return firstNode;}`

That's it. You now know how you can implement a stack using linked list. We will discuss another application of stacks (using linked lists) in a future post.

1. cooooollllll maaaahnnnnn
;*

2. damn interview!!!!!!!!
wot d hell s wrong wt u...:/:/

3. I'm back to this nice article, Thanks for sharing and keep sharing.
erp in chennai | cloud erp software in chennai

4. I found a lot of interesting information here. A really good post
office 2010 professional plus key deutsch

5. I simply wanted to write down a quick word to say thanks to you for those wonderful tips and hints you are showing on this site.
amazon-web-services-training-institute-in-chennai

6. Thanks a lot very much for the high your blog post quality and results-oriented help. I won’t think twice to endorse to anybody who wants and needs support about this area.
datascience training in chennai

7. Awesome..You have clearly explained.it is very simple to understand.it's very useful for me to know about new things..Keep posting.Thank You...
aws online training
amazon web services(AWS) online training
amazon web services(AWS) training online

8. the article is good and clarify my doubts very well. thanks for useful article.
AWS Training in Chennai
AWS course in Chennai
AWS Certification in Chennai
Best AWS Training in Chennai

9. This comment has been removed by the author.

10. The WB 10th results 2019 are much awaited for release. Students are eager to know their performance in the exam. Students are hereby informed that the results of madhyamik result 2019 was released online.

karresults.nic.in SSLC result 2019 will be declared in the month of May 2019. Result will be declared on the official website. Check the Karnataka SSLC Result 2019 Date here.

Madhya Pradesh Board of Secondary Education (MPBSE) declares the results of the mp board 10th result 2019 board examinations in the MP board result website.

Waiting for the declaration of bihar board 10th result 2019 Some good news is coming your way soon. As per the latest buzz, the Bihar School Examination Board (BSEB) is planning to declare the BSEB Matric Result 2019 and Bihar Board Intermediate Result 2019 soon.

web designing course with placement
php course in chennai
magento course in chennai

12. Thanks for sharing an informative blog keep rocking bring more details.I like the helpful info you provide in your articles. I’ll bookmark your weblog and check again here regularly. I am quite sure I will learn much new stuff right here! Good luck for the next!
mobile application development training online
mobile app development course
mobile application development course
learn mobile application development
mobile app development training
app development training
mobile application development training
mobile app development course online
online mobile application development

13. Thanks for sharing an informative blog keep rocking bring more details.I like the helpful info you provide in your articles. I’ll bookmark your weblog and check again here regularly. I am quite sure I will learn much new stuff right here! Good luck for the next!
web designing classes in chennai | web designing training institute in chennai
web designing and development course in chennai | web designing courses in Chennai
best institute for web designing in chennai | web designing course with placement in chennai
Web Designing Class
web designing course
best institute for web designing

14. Its really helpful for the users of this site. I am also searching about these type of sites now a days. So your site really helps me for searching the new and great stuff.

aws training in bangalore

mulesoft training in bangalore

salesforce developer training in bangalore

servicenow training in bangalore

cloud computing training in bangalore

dell boomi training in bangalore

15. Thanks for this. I really like what you've posted here and wish you the best of luck with this blog and thanks for sharing.

oracle training in bangalore

sql server dba training in bangalore

web designing training in bangalore

digital marketing training in bangalore

java training in bangalore

16. Great efforts put to publish these kinds of articles that are very useful to know. I’m thoroughly enjoying your blog. And Good comments create great relations. You’re doing an excellent job. Keep it up.

Magento Development Training Course in Chennai Zuan Education

Selenium Training Course in Chennai Zuan Education

17. Nice blog, it’s so knowledgeable, informative, and good looking site. I appreciate your hard work. Good job. Thank you for this wonderful sharing with us. Keep Sharing.
Digital Marketing Course In Kolkata
Web Design Course In Kolkata

18. Thanks for sharing such a nice information with us...
Oracle Training in Bangalore