I am getting a error when I compile this. The error reads:
24 C:\Dev-Cpp\stacks.cpp
implicit declaration of function `int PrintStackUp(...)'
27 C:\Dev-Cpp\stacks.cpp
implicit declaration of function `int system(...)'
Code:
// File: stackao.h Class, constant values, and type
// definitions for C++ static implementation of ADT stack
// This is the specification file for the class stack.
#ifndef STACKTYPE_H
#define STACKTYPE_H
// application dependent size of stack
const unsigned int MAX_NUM_ELS = 256;
typedef int el_t; // type varies with application
typedef int index_t;
class stack
{
public:
stack(); // stack constructor
~stack(); // stack deconstructor
bool StackIsEmpty(void); // Is stack empty?
bool StackIsFull(void); // Is stack full?
void Push(el_t); // push item
void Pop(el_t&); //pop top item
void PrintStack(stack& s); // prints all elements of stack
void Print2nd(stack& s); // prints 2nd element in stack
void PrintBottom(stack& s); // prints bottom element of stack
void Palindrome(stack& s ); // deterimes if characters from a palindrome
private:
void StackError(char*); //error handler
index_t top; //top index: -1 if empty
el_t el[MAX_NUM_ELS]; //container for elements
};
#endif
// File: stackao.cpp Contents: C++ source code for static
// implementation of ADT stack. This is the implementation file.
//
#include<iostream.h>
//#include<stdlib.h>
#include "stackType.h"
using namespace std;
//Default constructor
//Pre: None
//Post: The stack object is initialized to be empty
//
stack::stack(void)
{
top = -1;
}
//Stack destructor
//Pre: The stack has gone out of scope or an explicit call
// to ~stack has occurred.
//Post: The stack is empty.
stack::~stack()
{
top = -1;
}
//Boolean function that returns TRUE if the stack is empty
//Pre: The stack has been initialized.
//Post: The function returns TRUE if the stack is empty,
// FALSE otherwise.
bool stack::StackIsFull(void)
{
return (top == -1 ? true : false);
}
//Boolean function that returns TRUE if a stack is full
//Pre: The sack has been initialized.
//Post: The function has returned TRUE if the stack is full,
// FALSE otherwise.
bool stack::StackIsFull(void)
{
return (top ++ (MAX_NUM_ELS -1) ? true : false);
}
//Function to push an element onto a non_full stack
//Pre: e is a data element of typr el_t.
// The stack is not full.
//Post: If the stack was not full, e was placed on top of
// the stack; otherwise StackError was called.
void stack::Push(el_t e)
{
if ( StackIsFull())
StackError("Stack is fulle\n");
else
{
++top;
el[top] = e;
}
}
// Function to pop an element from a nonempty stack and
// store it in the refernced variable
// Pre: The stack is nonempty.
// Post: The top stack element has been removed and stored
// in e. If the stack was empty, StackError was called.
void stack::Pop(el_t& e)
{
if (StackIsEmpty())
StackError(" Stack is empty \n");
else
{
e = el[top];
--top;
}
}
// Function to print an error message and abort the program
//Pre: An unrecoverable error occurred.
// ErrorMessage is an error message.
//Post: ErrorMessage has been output and the program aborted.
void stack::StackError( char* ErrorMessage)
{
cerr<< ErrorMessage;
exit(1);
}
// Function to print all elements in a stack and leave stack unchanged
// after printing
//Pre: The stack is non empty
//Post:
void stack::PrintStack(stack& s)
{
el-t e;
stack temp;
While (!s.StackIsEmpty())
{
s.pop(e);
temp.push(e);
cout<<e;
}
While(!temp.StackIsEmpty())
{
temp.pop(e);
s.push(e);
}
}
void stack::Print2nd(stack& s)
{
el-t e1, e2;
While(!s.StackIsEmpty())
{
s.pop(e1);
s.pop(e2);
cout<<e2;
s.push(e2);
s.push(e1);
}
}
void stack::PrintBottom(stack& s )
{
el_t e;
stack temp;
While(!s.StackIsEmpty())
{
s.pop(e);
temp.push(e);
}
cout<<e;
While(!temp.StackIsEmpty())
{
temp.pop(e);
s.push(e);
}
}
void stack::Palindrome(stack& s )
{
stack u,u2;
el_t ch, ch1;
bool equal = true;
While(!s.StackIsEmpty())
{
s.pop(ch);
u.push(ch);
u2.push(ch);
}
While(!u.StackIsEmpty())
{
u.pop(ch);
s.push(ch);
}
While(!u2.StackIsEmpyt() && equal)
{
u2.pop(ch);
s.pop(ch1);
if (ch != ch1)
equal = false;
}
if (equal)
cout<<"Palindrome"<<endl;
else
cout<<"Not a Palindrome"<<endl;
} //end of Palindrome Function
// This is the user program.
#include <iostream>
//#include <stdlib.h>
#include "stackType.h"
int main()
{
int i;
char *subject = "Data Structures";
stack s;
cout<< "Characters as pushed onto the stack: ";
i = 0;
while (( subject[i] != '\0') && (!s.StackIsFull()))
{
cout<< subject[i];
s.Push(subject[i]);
++i;
}
cout<< "\nThe stack from the bottom to top: ";
PrintStackUp(s);
cout<<endl;
system("PAUSE");
return 0;
}