Header file provided by instructor
#ifndef BIGSTACK_H
#define BIGSTACK_H
#include "ministack.h"
struct ListNode // Description of a ListNode struct
{
MiniStack* stackPtr; // Pointer to a MiniStack object
ListNode* nextPtr; // Pointer to next ListNode
};
class BigStack // Description of BigStack class
{
private:
int num; // Total number of values stored in MiniStack
ListNode* headPtr; // Pointer to head of list of nodes representing bigstack
public:
BigStack(); // Default constructor
void Push(char ch); // Adds element to top of stack assuming stack not full
void Pop(); // Removes element from top of stack
char Top(); // Returns copy of top value assuming stack not empty
bool IsFull() const; // Returns true if ministack is full; false otherwise
bool IsEmpty() const; // Returns true if ministack empty; false otherwise
void Print() const; // Prints stack contents, top to bottom
~BigStack(); // Destructor
};
#endif
The BigStack class uses a dynamically allocated list of Nodes to implement a small stack that
contains no more than five characters.
I am at a loss on what to do here. I am having problems setting up the push function. Can someone help.
My code that I have written so far
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
#include <cmath>
#include <new>
#include <cstddef>
#include "ministack.h"
#include "bigstack.h"
using namespace std;
BigStack::BigStack() // Default constructor
{
headPtr = NULL;
num = 0;
}
void BigStack::Push(char ch) // Adds element to top of stack assuming stack not full
{
if (num == 0)
{
ListNode* nextPtr = new ListNode;
headPtr = nextPtr;
}
nextPtr->num = ch;
/* Directions from instructor.
Adds a new character to the top of the BigStack assuming that it
is not already full. If BigStack is empty (i.e. num is zero), Push
must dynamically allocate a ListNode structure before it can store
the character in BigStack. Remember, a MiniStack is a part of a
ListNode. Once a ListNode is available, the character can be
stored in the embedded MiniStack*/
}
void BigStack::Pop() // Removes element from top of stack
{
}
char BigStack::Top() // Returns copy of top value assuming stack not empty
{
}
bool BigStack::IsFull() const // Returns true if ministack is full; false otherwise
{
}
bool BigStack::IsEmpty() const // Returns true if ministack empty; false otherwise
{
}
void BigStack::Print() const // Prints stack contents, top to bottom
{
}
BigStack::~BigStack() // Destructor
{
}