CSCI 132 Data Structures--Spring 2014

    Home | | Syllabus | | Assignments | | Lecture Notes

    Laboratory 4 Solutions

    Solution to stack.cc code:

    /*******************************************************************
     * Name: Brenda Student
     * Date: 2/11/14
     * Course: CSCI 132 Section 01
     * Assignment: Lab 4
     * Instructor: Royden
     * Program: stack.cc
     * Purpose: Implementation of stack class with linked lists and Node class.
     ***************************************************************************/
    
    #include "stack.h"
    
    Stack::Stack( ) {
    /*Post: Empty stack is created*/
      top_node = NULL;
    }
    
    bool Stack::empty( ) const {
      /*Post: Returns true if the stack is empty, false otherwise*/
      return top_node == NULL;
    }
    
    int Stack::size( ) const {
      /*Post: Number of items in the stack is returned*/
      int count = 0;
      Node *count_node;
      count_node = top_node;
      while (count_node != NULL) {
        count++;
        count_node = count_node ->next;
      }
      return count;
    }
    
    Error_code Stack:: top(Stack_entry &item) const {
    	/*Post:Value of top of stack is placed in item;
          returns success or returns
          a code of underflow if the stack is empty*/  
      if (top_node == NULL ) {
        return underflow;
      }
      item = top_node->entry;
      return success;
    }
    
    Error_code Stack ::push(const Stack_entry &item)
      /*Post:Stack_entry item is added to the top of the Stack ;
        returns success or returns
        a code of overflow if dynamic memory is exhausted.*/
    {
      Node *new_top =new Node(item ,top_node);
      if (new_top ==NULL )return overflow ;
      top_node =new_top ;
      return success ;
    }
    
    Error_code Stack ::pop()
      /*Post:The top of the Stack is removed.If the Stack is empty the method returns
        underflow ;otherwise it returns success */
    {
      Node *old_top =top_node ;
      if (top_node ==NULL )return underflow ;
      top_node =old_top ->next ;
      delete old_top ;
      return success ;
    }
    
    Node ::Node()
    {
      next =NULL ;
    }
    
    Node ::Node(Node_entry item ,Node *add_on)
    {
      entry =item ;
      next =add_on ;
    }
    
    

    Home | | Syllabus | | Assignments | | Lecture Notes