From c1b6ffe70bd281c6c230fd63fabcaac2aff47514 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Sun, 7 Apr 2024 23:18:32 -0700 Subject: feat: initial commit --- chapter7/stack1.h | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 chapter7/stack1.h (limited to 'chapter7/stack1.h') diff --git a/chapter7/stack1.h b/chapter7/stack1.h new file mode 100644 index 0000000..d6ea8fe --- /dev/null +++ b/chapter7/stack1.h @@ -0,0 +1,79 @@ +// FILE: stack1.h (part of the namespace main_savitch_7A) +// TEMPLATE CLASS PROVIDED: stack +// +// TEMPLATE PARAMETER, TYPEDEFS and MEMBER CONSTANTS for the stack class: +// The template parameter, Item, is the data type of the items in the stack, +// also defined as stack::value_type. It may be any of the C++ built-in +// types (int, char, etc.), or a class with a default constructor, a copy +// constructor, and an assignment operator. The definition +// stack::size_type is the data type of any variable that keeps track of +// how many items are in a stack. The static const CAPACITY is the +// maximum capacity of a stack for this first stack implementation. +// NOTE: +// Many compilers require the use of the new keyword typename before using +// the expressions stack::value_type and stack::size_type. +// Otherwise the compiler doesn't have enough information to realize that it +// is the name of a data type. +// +// CONSTRUCTOR for the stack template class: +// stack( ) +// Postcondition: The stack has been initialized as an empty stack. +// +// MODIFICATION MEMBER FUNCTIONS for the stack class: +// void push(const Item& entry) +// Precondition: size( ) < CAPACITY. +// Postcondition: A new copy of entry has been pushed onto the stack. +// +// Item pop( ) +// Precondition: size( ) > 0. +// Postcondition: The top item of the stack has been removed. +// +// CONSTANT MEMBER FUNCTIONS for the stack class: +// bool empty( ) const +// Postcondition: Return value is true if the stack is empty. +// +// size_type size( ) const +// Postcondition: Return value is the total number of items in the stack. +// +// Item top( ) +// Precondition: size( ) > 0. +// Postcondition: The return value is the top item of the stack but the +// stack is unchanged. This differs slightly from the STL stack (where +// the top function returns a reference to the item on top of the stack). +// +// VALUE SEMANTICS for the stack class: +// Assignments and the copy constructor may be used with stack +// objects. + +#ifndef MAIN_SAVITCH_STACK1_H +#define MAIN_SAVITCH_STACK1_H +#include // Provides size_t + +namespace main_savitch_7A +{ + template + class stack + { + public: + // TYPEDEFS AND MEMBER CONSTANT -- See Appendix E if this fails to compile. + typedef std::size_t size_type; + typedef Item value_type; + static const size_type CAPACITY = 30; + // CONSTRUCTOR + stack( ) { used = 0; } + // MODIFICATION MEMBER FUNCTIONS + void push(const Item& entry); + void pop( ); + // CONSTANT MEMBER FUNCTIONS + bool empty( ) const { return (used == 0); } + size_type size( ) const { return used; } + Item top( ) const; + private: + Item data[CAPACITY]; // Partially filled array + size_type used; // How much of array is being used + }; +} + +#include "stack1.template" // Include the implementation. +#endif + -- cgit v1.2.3