Author: Maia Munich
Course: CISC 2200
Description: A comprehensive collection of data structure implementations and algorithms demonstrating fundamental computer science concepts.
This repository contains implementations of various data structures and algorithms organized by topic:
Data-Structures-CISC2200/
βββ FinalCode/ # Advanced Calculator Project
βββ DirectedWeightedGraph/ # Graph Data Structure
βββ Tree/ # Binary Search Tree Implementation
βββ SortedList/ # Sorted List with Array Implementation
βββ UnsortedArray/ # Unsorted List with Student Management
βββ Stack/ # Stack-based Algorithms
βββ Classpractice/ # Practice Programs
βββ practice/ # Additional Practice Files
Location: FinalCode/
Complexity: Advanced
Features:
- Infix to Postfix expression conversion using Shunting Yard algorithm
- Postfix expression evaluation with stack-based computation
- Comprehensive error handling (syntax and semantic errors)
- Interactive user input mode
- Extensive test suite with edge cases
Key Files:
Calculator.h/cpp- Main calculator class implementationSyntax.h- Syntax error handlingSemantic.h- Semantic error handlingMaiaMunich_FinalProject.cpp- Comprehensive test suite
Algorithms Used:
- Shunting Yard Algorithm (O(n))
- Stack-based evaluation (O(n))
- Operator precedence handling
Location: DirectedWeightedGraph/
Complexity: Intermediate-Advanced
Features:
- Adjacency matrix representation
- Vertex and edge management
- Breadth-First Traversal (BFT)
- Graph visualization and analysis
- Dynamic memory management
Key Files:
DirectedWeightedGraph.h/cpp- Main graph classLab5.cpp- Graph testing and demonstration
Algorithms Used:
- Breadth-First Search (O(V + E))
- Adjacency matrix operations (O(1) for edges, O(nΒ²) for vertices)
Location: Tree/
Complexity: Intermediate
Features:
- Complete BST implementation
- In-order traversal
- Advanced tree analysis (leaves, ancestors, descendants)
- Tree manipulation (mirroring/swapping)
- Memory management with proper cleanup
Key Files:
Tree.h/cpp- BST implementationLab4.cpp- Comprehensive BST testing
Algorithms Used:
- Binary Search Tree operations (O(log n) average)
- Recursive tree traversal (O(n))
- Tree analysis algorithms (O(n))
Location: SortedList/
Complexity: Intermediate
Features:
- Array-based sorted list with automatic ordering
- Binary search for efficient retrieval
- List merging functionality
- Bubble sort implementation
- Iterator support
Key Files:
SortedListByArray.h/cpp- Sorted list implementationSortedType.h/cpp- Linked list versionLab2.cpp- List merging demonstration
Algorithms Used:
- Binary Search (O(log n))
- Insertion Sort (O(nΒ²))
- Merge Algorithm (O(n + m))
Location: UnsortedArray/
Complexity: Beginner-Intermediate
Features:
- Student data management (FIDN, first name, last name)
- Duplicate prevention
- List splitting based on key values
- Linear search implementation
- Interactive user interface
Key Files:
UnsortedListbyArray.h/cpp- Unsorted list implementationStudent.h/cpp- Student data structureLab1.cpp- Student management system
Algorithms Used:
- Linear Search (O(n))
- List Splitting (O(n))
- Duplicate Detection (O(n))
Location: Stack/
Complexity: Beginner
Features:
- Stack-based parentheses validation
- Support for multiple bracket types: (), {}, []
- Interactive expression checking
- Mismatch detection
Key Files:
Lab3.cpp- Parentheses balancing checker
Algorithms Used:
- Stack-based validation (O(n))
Location: Classpractice/, practice/
Complexity: Beginner
Features:
- Linear search implementation
- Array processing concepts
- Basic algorithm demonstrations
Key Files:
practice1.cpp- Linear search algorithmarray1.cpp- Array processing concepts
- C++ compiler (g++, clang++, or Visual Studio)
- Standard C++ library support
Calculator Project:
cd FinalCode/
g++ -o calculator Calculator.cpp MaiaMunich_FinalProject.cpp
./calculatorGraph Project:
cd DirectedWeightedGraph/
g++ -o graph DirectedWeightedGraph.cpp Lab5.cpp
./graphTree Project:
cd Tree/
g++ -o tree Tree.cpp Lab4.cpp
./treeSorted List Project:
cd SortedList/
g++ -o sortedlist SortedListByArray.cpp Lab2.cpp
./sortedlistUnsorted List Project:
cd UnsortedArray/
g++ -o unsortedlist UnsortedListbyArray.cpp Student.cpp Lab1.cpp
./unsortedlistStack Project:
cd Stack/
g++ -o stack Lab3.cpp
./stack| Project | Primary Algorithm | Time Complexity | Space Complexity |
|---|---|---|---|
| Calculator | Shunting Yard | O(n) | O(n) |
| Graph | BFS | O(V + E) | O(V) |
| Tree | BST Operations | O(log n) avg | O(n) |
| SortedList | Binary Search | O(log n) | O(1) |
| UnsortedList | Linear Search | O(n) | O(1) |
| Stack | Stack Validation | O(n) | O(n) |
Covers arrays, linked lists, stacks, BSTs, and graphs with full complexity analysis.
- β Arrays (sorted and unsorted)
- β Linked Lists
- β Stacks
- β Binary Search Trees
- β Graphs (adjacency matrix)
- β Dynamic memory management
- β Linear Search
- β Binary Search
- β Bubble Sort
- β Insertion Sort
- β Merge Algorithm
- β Breadth-First Search
- β Shunting Yard Algorithm
- β Stack-based Expression Evaluation
- β Object-Oriented Programming
- β Exception Handling
- β Memory Management
- β Template Usage
- β Iterator Patterns
- β Error Handling Strategies
- Comprehensive header comments for all files
- Detailed function documentation with pre/post conditions
- Algorithm explanations and complexity analysis
- Clear variable naming and code organization
- Syntax error detection and reporting
- Semantic error validation
- Input validation and bounds checking
- Graceful error recovery
- Comprehensive test suites for each project
- Edge case handling
- Interactive testing modes
- Validation of expected outputs
Calculator calc;
calc.SetInfixExpression("(1 + 2) * 3");
calc.CheckError();
calc.DisplayResult(); // Output: 9DirectedWeightedGraph graph(10);
VertexType v1, v2;
v1.item.Initialize(1);
v2.item.Initialize(2);
graph.AddVertex(v1);
graph.AddVertex(v2);
graph.AddEdge(v1, v2, 5);
graph.BFT(v1); // Breadth-first traversalTree bst;
ItemType item;
item.Initialize('A');
bst.InsertItem(item);
bst.Print(); // In-order traversal
cout << "Leaves: " << bst.LeafCount() << endl;- Data Structures and Algorithms in C++ - Mark Allen Weiss
- Introduction to Algorithms - Cormen, Leiserson, Rivest, Stein
- C++ Reference Documentation - cppreference.com
- Stack Overflow - Community support and examples
For questions, reach out at maia.munich@gmail.com
Last Updated: June 2026
Total Projects: 7