This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
user:nbrimme1:portfolio:eoce [2013/12/14 04:49] – created nbrimme1 | user:nbrimme1:portfolio:eoce [2013/12/14 20:11] (current) – nbrimme1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | __**This is the C++ code I had finished for the End of Course Experience C++ Re-implementation: | ||
+ | \\ | ||
+ | (The code provided by Matt is also included.) | ||
+ | \\ | ||
+ | //Files are located in **src/ | ||
+ | \\ | ||
+ | **Makefile: | ||
+ | <code make> | ||
+ | SHELL = /bin/bash -e | ||
+ | INC = -I inc/ | ||
+ | CXXFLAGS = -Wall | ||
+ | OPTS = | ||
+ | CXX = g++ $(CXXFLAGS) $(OPTS) $(INC) | ||
+ | OBJ = | ||
+ | AR = ar | ||
+ | DEBUG = | ||
+ | LIBS = src | ||
+ | UNIT = testing | ||
+ | ALL = $(LIBS) testing | ||
+ | BIN = | ||
+ | default: libs testing | ||
+ | debug: libs-debug testing-debug | ||
+ | libs-debug: CXX += -DDEBUG -g | ||
+ | libs-debug: DEBUG = debug | ||
+ | libs-debug: libs | ||
+ | |||
+ | libs: | ||
+ | @for i in $(LIBS); do make -C $$i $(DEBUG); echo; done | ||
+ | @echo | ||
+ | |||
+ | testing-debug: | ||
+ | testing-debug: | ||
+ | testing-debug: | ||
+ | |||
+ | testing: | ||
+ | @for i in $(UNIT); do make -C $$i $(DEBUG); echo; done | ||
+ | @echo | ||
+ | |||
+ | clean: | ||
+ | @for i in $(ALL); do make -C $$i clean; done | ||
+ | @rm -f lib/* | ||
+ | |||
+ | copy: | ||
+ | mkdir -p ~/ | ||
+ | cp -av / | ||
+ | |||
+ | help: | ||
+ | @echo | ||
+ | @echo " | ||
+ | @echo "** make - build everything | ||
+ | @echo "** make debug - build everything with debug symbols | ||
+ | @echo " | ||
+ | @echo "** make testing | ||
+ | @echo "** make testing-debug | ||
+ | @echo "** make libs - build all supporting libraries | ||
+ | @echo "** make libs-debug | ||
+ | @echo " | ||
+ | @echo "** make clean - clean; remove all objects/ | ||
+ | @echo "** make help - this information | ||
+ | @echo " | ||
+ | \\ | ||
+ | **/inc:** | ||
+ | * **list.h: | ||
+ | #ifndef _LIST_H | ||
+ | #define _LIST_H | ||
+ | |||
+ | #include " | ||
+ | |||
+ | class List { | ||
+ | public: | ||
+ | List(); | ||
+ | void insert(Node *, Node *); | ||
+ | void append(Node *, Node *); | ||
+ | Node *getNode(Node *); | ||
+ | void displayf(); | ||
+ | void displayb(); | ||
+ | void sort(); | ||
+ | int getQuantity(); | ||
+ | Node * getStart(); | ||
+ | Node * getEnd(); | ||
+ | ~List(); | ||
+ | |||
+ | private: | ||
+ | Node *start; | ||
+ | Node *end; | ||
+ | int qty; | ||
+ | }; | ||
+ | |||
+ | # | ||
+ | |||
+ | * **node.h: | ||
+ | #ifndef _NODE_H | ||
+ | #define _NODE_H | ||
+ | |||
+ | #include < | ||
+ | |||
+ | class Node { | ||
+ | public: | ||
+ | Node(); | ||
+ | Node(int); | ||
+ | Node *copy(); | ||
+ | int | ||
+ | Node *getNext(); | ||
+ | Node *getPrev(); | ||
+ | Node *getData(); | ||
+ | void | ||
+ | void | ||
+ | void | ||
+ | void | ||
+ | ~Node(); | ||
+ | |||
+ | private: | ||
+ | Node *next; | ||
+ | Node *prev; | ||
+ | Node *data; | ||
+ | int value; | ||
+ | }; | ||
+ | |||
+ | # | ||
+ | |||
+ | * **queue.h**< | ||
+ | #ifndef _QUEUE_H | ||
+ | #define _QUEUE_H | ||
+ | |||
+ | #include " | ||
+ | |||
+ | class Queue : protected List { | ||
+ | public: | ||
+ | Queue(); | ||
+ | Queue(int); | ||
+ | void | ||
+ | Node *dequeue(); | ||
+ | int | ||
+ | void | ||
+ | ~Queue(); | ||
+ | |||
+ | private: | ||
+ | List *data; | ||
+ | Node *front; | ||
+ | Node *back; | ||
+ | int bufsiz; | ||
+ | }; | ||
+ | |||
+ | # | ||
+ | |||
+ | * **stack.h**< | ||
+ | #ifndef _STACK_H | ||
+ | #define _STACK_H | ||
+ | |||
+ | #include " | ||
+ | |||
+ | class Stack : protected List { | ||
+ | public: | ||
+ | Stack(); | ||
+ | Stack(int); | ||
+ | void | ||
+ | Node *pop (); | ||
+ | Node *peek(); | ||
+ | int | ||
+ | int | ||
+ | void | ||
+ | ~Stack(); | ||
+ | |||
+ | private: | ||
+ | List *data; | ||
+ | Node *top; | ||
+ | int size; | ||
+ | }; | ||
+ | |||
+ | # | ||
+ | \\ | ||
+ | **/lib:** Files in this directory are made using the make file: | ||
+ | < | ||
+ | \\ | ||
+ | **/src:** | ||
+ | * **Makefile: | ||
+ | SHELL = /bin/bash -e | ||
+ | INC = -I ../inc/ | ||
+ | CFLAGS = -Wall | ||
+ | OPTS = | ||
+ | CXX = g++ $(CFLAGS) $(OPTS) $(INC) | ||
+ | PARTS = $(shell /bin/ls -1Ad * | grep -v ' | ||
+ | DEBUG = | ||
+ | default: libs | ||
+ | |||
+ | debug: CXX += -DDEBUG -g | ||
+ | debug: DEBUG = debug | ||
+ | debug: libs | ||
+ | |||
+ | libs: | ||
+ | @for i in $(PARTS); do make -C $$i $(DEBUG); echo; done | ||
+ | @echo | ||
+ | |||
+ | clean: | ||
+ | @for i in $(PARTS); do make -C $$i clean; done | ||
+ | @rm -f ${LIB}</ | ||
+ | * **/btree** | ||
+ | * **Makefile: | ||
+ | CFLAGS = -Wall | ||
+ | INC = -I ../../inc | ||
+ | AR = ar | ||
+ | CXX = g++ $(CFLAGS) $(INC) | ||
+ | SRC = $(shell /bin/ls -1 *.cc 2>/ | ||
+ | OBJ = $(SRC: | ||
+ | LIB = $(shell /bin/pwd | /bin/sed ' | ||
+ | all: $(SRC) $(OBJ) lib | ||
+ | |||
+ | debug: CXX += -DDEBUG -g | ||
+ | debug: DEBUG = debug | ||
+ | debug: $(SRC) $(OBJ) lib | ||
+ | |||
+ | .cc.o: | ||
+ | ifneq ($(MAKECMDGOALS), | ||
+ | @printf " | ||
+ | @$(CXX) -c $< && echo " | ||
+ | else | ||
+ | $(CXX) -c $< | ||
+ | endif | ||
+ | |||
+ | lib: | ||
+ | ifneq ($(MAKECMDGOALS), | ||
+ | @printf " | ||
+ | @$(AR) rcs ../ | ||
+ | else | ||
+ | $(AR) rcs ../ | ||
+ | endif | ||
+ | |||
+ | |||
+ | clean: | ||
+ | rm -f *.o $(OBJ) core</ | ||
+ | \\ | ||
+ | * **/list** | ||
+ | * **Makefile: | ||
+ | CFLAGS = -Wall | ||
+ | INC = -I ../../inc | ||
+ | AR = ar | ||
+ | CXX = g++ $(CFLAGS) $(INC) | ||
+ | SRC = $(shell /bin/ls -1 *.cc 2>/ | ||
+ | OBJ = $(SRC: | ||
+ | LIB = $(shell /bin/pwd | /bin/sed ' | ||
+ | all: $(SRC) $(OBJ) lib | ||
+ | |||
+ | debug: CXX += -DDEBUG -g | ||
+ | debug: DEBUG = debug | ||
+ | debug: $(SRC) $(OBJ) lib | ||
+ | |||
+ | .cc.o: | ||
+ | ifneq ($(MAKECMDGOALS), | ||
+ | @printf " | ||
+ | @$(CXX) -c $< && echo " | ||
+ | else | ||
+ | $(CXX) -c $< | ||
+ | endif | ||
+ | |||
+ | lib: | ||
+ | ifneq ($(MAKECMDGOALS), | ||
+ | @printf " | ||
+ | @$(AR) rcs ../ | ||
+ | else | ||
+ | $(AR) rcs ../ | ||
+ | endif | ||
+ | |||
+ | |||
+ | clean: | ||
+ | rm -f *.o $(OBJ) core</ | ||
+ | * **append.cc: | ||
+ | #include " | ||
+ | |||
+ | void List :: append(Node *place, Node *newNode) | ||
+ | { | ||
+ | // append() - insert newNode after place. | ||
+ | |||
+ | void List :: append(Node *place, Node *newNode) | ||
+ | { | ||
+ | Node *tmp; | ||
+ | if ((this != NULL) && (newNode != NULL)) | ||
+ | { | ||
+ | if (this -> end == NULL) | ||
+ | { | ||
+ | this | ||
+ | newNode -> setPrev(NULL); | ||
+ | newNode -> setNext(NULL); | ||
+ | } | ||
+ | else if (place == this -> end) | ||
+ | { | ||
+ | this | ||
+ | newNode -> setNext(this -> end); | ||
+ | this | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | newNode -> setNext(place); | ||
+ | if (place != NULL) | ||
+ | { | ||
+ | newNode -> setPrev(place -> getPrev()); | ||
+ | place | ||
+ | tmp = newNode -> getPrev(); | ||
+ | tmp -> setNext(newNode); | ||
+ | } | ||
+ | } | ||
+ | // Update quantity variable. | ||
+ | this -> qty = this -> qty + 1; | ||
+ | } | ||
+ | }</ | ||
+ | * **create.cc: | ||
+ | #include " | ||
+ | |||
+ | List :: List() | ||
+ | { | ||
+ | this -> start = NULL; | ||
+ | this -> end = NULL; | ||
+ | this -> qty = 0; | ||
+ | }</ | ||
+ | * **destroy.cc: | ||
+ | #include " | ||
+ | |||
+ | List :: ~List() | ||
+ | { | ||
+ | Node *node, *nextNode; | ||
+ | node = this -> start; | ||
+ | while (node != NULL) | ||
+ | { | ||
+ | // Set the next node pointer before node is removed. | ||
+ | nextNode = node -> next; | ||
+ | // Delete the Node. | ||
+ | delete node; | ||
+ | // Iterate to the next node. | ||
+ | node = nextNode; | ||
+ | } | ||
+ | }</ | ||
+ | * **display.cc: | ||
+ | #include " | ||
+ | #include < | ||
+ | |||
+ | void List :: displayf() | ||
+ | { | ||
+ | Node *tmp; | ||
+ | int i = 0; | ||
+ | |||
+ | tmp = this -> start; | ||
+ | |||
+ | while (tmp != NULL) | ||
+ | { | ||
+ | fprintf(stdout, | ||
+ | i = i + 1; | ||
+ | tmp = tmp -> getNext(); | ||
+ | } | ||
+ | |||
+ | fprintf(stdout, | ||
+ | } | ||
+ | |||
+ | void List :: displayb() | ||
+ | { | ||
+ | Node *tmp; | ||
+ | int i = getQuantity(); | ||
+ | |||
+ | tmp = this -> end; | ||
+ | |||
+ | while (tmp != i) | ||
+ | { | ||
+ | fprintf(stdout, | ||
+ | i = i - 1; | ||
+ | tmp = tmp -> getPrev(); | ||
+ | } | ||
+ | |||
+ | fprintf(stdout, | ||
+ | }</ | ||
+ | * **end.cc: | ||
+ | #include " | ||
+ | |||
+ | Node * List :: getEnd() | ||
+ | { | ||
+ | // Return the end of the list. | ||
+ | return (this -> end;) | ||
+ | }</ | ||
+ | * **getnode.cc: | ||
+ | #include " | ||
+ | |||
+ | Node * List :: getNode (Node *place) | ||
+ | { | ||
+ | // to be implemented | ||
+ | // get input. | ||
+ | // iterate through list to input + 1 (Because 0 is counted). | ||
+ | // return input + 1. | ||
+ | }</ | ||
+ | * **insert.cc: | ||
+ | #include " | ||
+ | |||
+ | // insert() - insert newNode before place in this | ||
+ | |||
+ | void List :: insert(Node *place, Node *newNode) | ||
+ | { | ||
+ | Node *tmp; | ||
+ | if ((this != NULL) && (newNode != NULL)) | ||
+ | { | ||
+ | if (this -> start == NULL) | ||
+ | { | ||
+ | this | ||
+ | newNode -> setPrev(NULL); | ||
+ | newNode -> setNext(NULL); | ||
+ | } | ||
+ | else if (place == this -> start) | ||
+ | { | ||
+ | this | ||
+ | newNode -> setNext(this -> start); | ||
+ | this | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | newNode -> setNext(place); | ||
+ | if (place != NULL) | ||
+ | { | ||
+ | newNode -> setPrev(place -> getPrev()); | ||
+ | place | ||
+ | tmp = newNode -> getPrev(); | ||
+ | tmp -> setNext(newNode); | ||
+ | } | ||
+ | } | ||
+ | // Update quantity variable. | ||
+ | this -> qty = this -> qty + 1; | ||
+ | } | ||
+ | }</ | ||
+ | * **size.cc: | ||
+ | #include " | ||
+ | |||
+ | int List :: getQuantity() | ||
+ | { | ||
+ | return(qty); | ||
+ | }</ | ||
+ | * **sort.cc: | ||
+ | #include " | ||
+ | |||
+ | void List :: sort() | ||
+ | { | ||
+ | list = this; | ||
+ | list :: iterator = i; | ||
+ | |||
+ | list.sort(); | ||
+ | std::cout << " | ||
+ | // Iterate through the list | ||
+ | for (i = this.begin(); | ||
+ | |||
+ | // Compare the values | ||
+ | // If this-> | ||
+ | // remove this-> | ||
+ | |||
+ | // Print sorted values. | ||
+ | std::cout << ' ' << *i; | ||
+ | |||
+ | return (0); | ||
+ | }</ | ||
+ | * **start.cc: | ||
+ | #include " | ||
+ | |||
+ | Node * List :: getStart() | ||
+ | { | ||
+ | // Return the start of the list. | ||
+ | return (this -> start;) | ||
+ | }</ | ||
+ | \\ | ||
+ | * **/node** | ||
+ | * Makefile:< | ||
+ | CFLAGS = -Wall | ||
+ | INC = -I ../../inc | ||
+ | AR = ar | ||
+ | CXX = g++ $(CFLAGS) $(INC) | ||
+ | SRC = $(shell /bin/ls -1 *.cc 2>/ | ||
+ | OBJ = $(SRC: | ||
+ | LIB = $(shell /bin/pwd | /bin/sed ' | ||
+ | all: $(SRC) $(OBJ) lib | ||
+ | |||
+ | debug: CXX += -DDEBUG -g | ||
+ | debug: DEBUG = debug | ||
+ | debug: $(SRC) $(OBJ) lib | ||
+ | |||
+ | .cc.o: | ||
+ | ifneq ($(MAKECMDGOALS), | ||
+ | @printf " | ||
+ | @$(CXX) -c $< && echo " | ||
+ | else | ||
+ | $(CXX) -c $< | ||
+ | endif | ||
+ | |||
+ | lib: | ||
+ | ifneq ($(MAKECMDGOALS), | ||
+ | @printf " | ||
+ | @$(AR) rcs ../ | ||
+ | else | ||
+ | $(AR) rcs ../ | ||
+ | endif | ||
+ | |||
+ | |||
+ | clean: | ||
+ | rm -f *.o $(OBJ) core</ | ||
+ | * copy.cc:< | ||
+ | #include " | ||
+ | |||
+ | Node * Node :: copy() | ||
+ | { | ||
+ | // First create an empthy node. | ||
+ | Node *tmp; | ||
+ | Node *tmp2 = new Node; | ||
+ | |||
+ | // " | ||
+ | tmp = this -> getNext(); | ||
+ | tmp2 -> setNext(tmp) | ||
+ | |||
+ | // " | ||
+ | tmp = this -> getPrev(); | ||
+ | tmp2 -> setPrev(tmp); | ||
+ | |||
+ | // " | ||
+ | tmp = this -> getValue(); | ||
+ | tmp2 -> setValue(tmp); | ||
+ | |||
+ | // " | ||
+ | tmp = this -> getData(); | ||
+ | tmp2 -> setData(tmp); | ||
+ | |||
+ | // Return copied node. | ||
+ | return(tmp2); | ||
+ | }</ | ||
+ | * create.cc:< | ||
+ | #include " | ||
+ | |||
+ | Node :: Node() | ||
+ | { | ||
+ | this -> next = NULL; | ||
+ | this -> prev = NULL; | ||
+ | this -> data = NULL; | ||
+ | this -> value = 0; | ||
+ | } | ||
+ | |||
+ | Node :: Node(int value) | ||
+ | { | ||
+ | this -> next = NULL; | ||
+ | this -> prev = NULL; | ||
+ | this -> data = NULL; | ||
+ | this -> value = value; | ||
+ | }</ | ||
+ | * data.cc:< | ||
+ | #include " | ||
+ | |||
+ | Node * Node :: getData() | ||
+ | { | ||
+ | return (this -> data); | ||
+ | } | ||
+ | |||
+ | void Node :: setData(Node *data) | ||
+ | { | ||
+ | this -> data = data; | ||
+ | }</ | ||
+ | * destroy.cc:< | ||
+ | #include " | ||
+ | |||
+ | Node :: ~Node() | ||
+ | { | ||
+ | this -> next = NULL; | ||
+ | this -> prev = NULL; | ||
+ | if (this -> data != NULL) | ||
+ | delete this -> data; | ||
+ | |||
+ | this -> data = NULL; | ||
+ | this -> value = 0; | ||
+ | }</ | ||
+ | * next.cc:< | ||
+ | #include " | ||
+ | |||
+ | Node * Node :: getNext() | ||
+ | { | ||
+ | return (this -> next); | ||
+ | } | ||
+ | |||
+ | void Node :: setNext(Node *next) | ||
+ | { | ||
+ | this -> next = next; | ||
+ | }</ | ||
+ | * prev.cc:< | ||
+ | #include " | ||
+ | |||
+ | Node * Node :: getPrev() | ||
+ | { | ||
+ | return (this -> prev); | ||
+ | } | ||
+ | |||
+ | void Node :: setPrev(Node *prev) | ||
+ | { | ||
+ | this -> prev = prev; | ||
+ | }</ | ||
+ | * value.cc:< | ||
+ | #include " | ||
+ | |||
+ | int Node :: getValue() | ||
+ | { | ||
+ | return (this -> value); | ||
+ | } | ||
+ | |||
+ | void Node :: setValue(int value) | ||
+ | { | ||
+ | this -> value = value; | ||
+ | }</ | ||
+ | \\ | ||
+ | * **/queue** | ||
+ | * Makefile:< | ||
+ | CFLAGS = -Wall | ||
+ | INC = -I ../../inc | ||
+ | AR = ar | ||
+ | CXX = g++ $(CFLAGS) $(INC) | ||
+ | SRC = $(shell /bin/ls -1 *.cc 2>/ | ||
+ | OBJ = $(SRC: | ||
+ | LIB = $(shell /bin/pwd | /bin/sed ' | ||
+ | all: $(SRC) $(OBJ) lib | ||
+ | |||
+ | debug: CXX += -DDEBUG -g | ||
+ | debug: DEBUG = debug | ||
+ | debug: $(SRC) $(OBJ) lib | ||
+ | |||
+ | .cc.o: | ||
+ | ifneq ($(MAKECMDGOALS), | ||
+ | @printf " | ||
+ | @$(CXX) -c $< && echo " | ||
+ | else | ||
+ | $(CXX) -c $< | ||
+ | endif | ||
+ | |||
+ | lib: | ||
+ | ifneq ($(MAKECMDGOALS), | ||
+ | @printf " | ||
+ | @$(AR) rcs ../ | ||
+ | else | ||
+ | $(AR) rcs ../ | ||
+ | endif | ||
+ | |||
+ | |||
+ | clean: | ||
+ | rm -f *.o $(OBJ) core</ | ||
+ | * create.cc:< | ||
+ | #include " | ||
+ | |||
+ | Queue :: Queue() | ||
+ | { | ||
+ | // to be implemented | ||
+ | } | ||
+ | |||
+ | Queue :: Queue(int size) | ||
+ | { | ||
+ | // to be implemented | ||
+ | }</ | ||
+ | * dequeue.cc:< | ||
+ | #include " | ||
+ | |||
+ | Node * Queue :: dequeue() | ||
+ | { | ||
+ | // to be implemented | ||
+ | }</ | ||
+ | * destroy.cc:< | ||
+ | #include " | ||
+ | |||
+ | Queue :: ~Queue() | ||
+ | { | ||
+ | delete this -> data; | ||
+ | this -> data = NULL; | ||
+ | this -> bufsiz = 0; | ||
+ | this -> front = NULL; | ||
+ | this -> back = NULL; | ||
+ | }</ | ||
+ | * enqueue.cc:< | ||
+ | #include " | ||
+ | |||
+ | void Queue :: enqueue(Node *newNode) | ||
+ | { | ||
+ | // to be implemented | ||
+ | }</ | ||
+ | * size.cc< | ||
+ | #include " | ||
+ | |||
+ | int Queue :: getBufferSize() | ||
+ | { | ||
+ | // to be implemented | ||
+ | } | ||
+ | |||
+ | void Queue :: setBufferSize(int size) | ||
+ | { | ||
+ | // to be implemented | ||
+ | }</ | ||
+ | \\ | ||
+ | * **/stack** | ||
+ | * **Makefile: | ||
+ | CFLAGS = -Wall | ||
+ | INC = -I ../../inc | ||
+ | AR = ar | ||
+ | CXX = g++ $(CFLAGS) $(INC) | ||
+ | SRC = $(shell /bin/ls -1 *.cc 2>/ | ||
+ | OBJ = $(SRC: | ||
+ | LIB = $(shell /bin/pwd | /bin/sed ' | ||
+ | all: $(SRC) $(OBJ) lib | ||
+ | |||
+ | debug: CXX += -DDEBUG -g | ||
+ | debug: DEBUG = debug | ||
+ | debug: $(SRC) $(OBJ) lib | ||
+ | |||
+ | .cc.o: | ||
+ | ifneq ($(MAKECMDGOALS), | ||
+ | @printf " | ||
+ | @$(CXX) -c $< && echo " | ||
+ | else | ||
+ | $(CXX) -c $< | ||
+ | endif | ||
+ | |||
+ | lib: | ||
+ | ifneq ($(MAKECMDGOALS), | ||
+ | @printf " | ||
+ | @$(AR) rcs ../ | ||
+ | else | ||
+ | $(AR) rcs ../ | ||
+ | endif | ||
+ | |||
+ | |||
+ | clean: | ||
+ | rm -f *.o $(OBJ) core</ | ||
+ | * **create.cc: | ||
+ | #include " | ||
+ | |||
+ | Stack :: Stack() | ||
+ | { | ||
+ | // to be implemented | ||
+ | // Call create(); from /src/list | ||
+ | // Set *top pointer. | ||
+ | |||
+ | /* | ||
+ | Node *top; | ||
+ | this -> start = top; | ||
+ | this -> qty = 0; | ||
+ | */ | ||
+ | } | ||
+ | |||
+ | Stack :: Stack(int size) | ||
+ | { | ||
+ | return(getSize); | ||
+ | }</ | ||
+ | * **destroy.cc: | ||
+ | #include " | ||
+ | |||
+ | Stack :: ~Stack() | ||
+ | { | ||
+ | delete this -> data; | ||
+ | // here I subconsciously did the "right thing" | ||
+ | this -> data = NULL; | ||
+ | this -> size = 0; | ||
+ | this -> top = NULL; | ||
+ | // a possible means of establishing sane behavior. This needs testing; it may not work here in the destructor. | ||
+ | this = NULL; | ||
+ | } | ||
+ | // NOTE: If the explicit "this = NULL;" line doesn' | ||
+ | * **peek.cc: | ||
+ | #include " | ||
+ | |||
+ | Node * Stack :: peek() | ||
+ | { | ||
+ | return(stack.top) | ||
+ | }</ | ||
+ | * **pop.cc: | ||
+ | #include " | ||
+ | |||
+ | Node * Stack :: pop() | ||
+ | { | ||
+ | // to be implemented | ||
+ | }</ | ||
+ | * **push.cc: | ||
+ | #include " | ||
+ | |||
+ | void Stack :: push(Node *newNode) | ||
+ | { | ||
+ | // to be implemented | ||
+ | }</ | ||
+ | * **size.cc: | ||
+ | #include " | ||
+ | |||
+ | int Stack :: getSize() | ||
+ | { | ||
+ | // to be implemented | ||
+ | // 1. Set *size to list. | ||
+ | // 2. Iterate through list while incrementing *size | ||
+ | // 3. return (size); | ||
+ | |||
+ | // tmp variable for List. | ||
+ | List *tmp; | ||
+ | // i is an iterator. | ||
+ | int i = 0; | ||
+ | // Set tmp to the start of this. | ||
+ | tmp = this -> start; | ||
+ | |||
+ | // Iterate through this while incrementing the node count i. | ||
+ | while (tmp != NULL) | ||
+ | { | ||
+ | // Count the node FIRST. | ||
+ | i = i + 1; | ||
+ | // Iterate tmp to the next node. | ||
+ | tmp = tmp -> getNext(); | ||
+ | } | ||
+ | |||
+ | return(tmp) | ||
+ | } | ||
+ | |||
+ | void Stack :: setSize(int size) | ||
+ | { | ||
+ | this -> size = size; | ||
+ | } | ||
+ | |||
+ | int Stack :: getListSize() | ||
+ | { | ||
+ | return (this -> getQuantity()); | ||
+ | }</ | ||
+ | \\ | ||
+ | **/ | ||
+ | * **Makefile: | ||
+ | CFLAGS = -Wall -L../lib -lqueue -lstack -llist -lnode | ||
+ | INC = -I ../inc/ | ||
+ | CXX = g++ $(INC) | ||
+ | SRC = $(shell /bin/ls -1 *.cc 2>/ | ||
+ | BIN = $(SRC:.cc=) | ||
+ | all: $(SRC) $(BIN) | ||
+ | |||
+ | debug: CXX += -DDEBUG -g | ||
+ | debug: DEBUG = debug | ||
+ | debug: $(SRC) $(BIN) | ||
+ | |||
+ | .cc: | ||
+ | ifneq ($(MAKECMDGOALS), | ||
+ | @printf " | ||
+ | @$(CXX) -o $@ $< $(CFLAGS) && echo " | ||
+ | else | ||
+ | $(CXX) -o $@ $< $(CFLAGS) | ||
+ | endif | ||
+ | |||
+ | clean: | ||
+ | rm -f *.o $(BIN) core</ | ||
+ | * **stacktest.cc**< | ||
+ | #include < | ||
+ | #include " | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | Node *tmp = new Node; | ||
+ | Stack *myStack = new Stack(0); | ||
+ | tmp -> setValue(fgetc(stdin)); | ||
+ | fgetc(stdin); | ||
+ | |||
+ | while(tmp-> | ||
+ | { | ||
+ | myStack -> push(tmp); | ||
+ | tmp = new Node(fgetc(stdin)); | ||
+ | fgetc(stdin); | ||
+ | } | ||
+ | |||
+ | fprintf(stdout, | ||
+ | fprintf(stdout, | ||
+ | |||
+ | tmp = myStack -> pop(); | ||
+ | while (tmp != NULL) | ||
+ | { | ||
+ | fprintf(stdout, | ||
+ | delete tmp; | ||
+ | tmp = myStack -> pop(); | ||
+ | } | ||
+ | while(tmp != NULL); | ||
+ | |||
+ | fprintf(stdout, | ||
+ | return(0); | ||
+ | }</ |