# huiyzhou/ece309_f26 architecture

> Architecture diagram of the GitHub repository huiyzhou/ece309_f26, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/huiyzhou/ece309_f26
- Repository: https://github.com/huiyzhou/ece309_f26

## Overview

This repository is a collection of standalone C/C++ teaching examples, not a unified application. The user workflow is to select and run an example, which demonstrates a language or data-structure concept and, in sampled programs, prints results to standard output. The examples cover pointers and memory, object-oriented features, operator overloading, polynomial arithmetic, smart pointers, and linked-list-based containers. The README only describes the files as class examples; unsampled files are represented by their tree paths, without inferred runtime connections.

Main entry points: [`pointer1.c`](https://github.com/huiyzhou/ece309_f26/blob/main/pointer1.c) (Pointer addresses), [`pointer2.c`](https://github.com/huiyzhou/ece309_f26/blob/main/pointer2.c) (Pointer playground), [`mem_space.cpp`](https://github.com/huiyzhou/ece309_f26/blob/main/mem_space.cpp) (Memory layout), [`ref_ex.cpp`](https://github.com/huiyzhou/ece309_f26/blob/main/ref_ex.cpp) (Value and references)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_fundamentals["Language fundamentals"]
  node_pointer1["Pointer addresses<br/>[pointer1.c]"]
  node_pointer2["Pointer playground<br/>[pointer2.c]"]
  node_memory["Memory layout<br/>[mem_space.cpp]"]
  node_references["Value and references<br/>[ref_ex.cpp]"]
  node_overload["Function overloads<br/>[func_overload.cpp]"]
  node_range["Range examples<br/>[range_ex.cpp]"]
  node_hello["Hello example<br/>[hello.cpp]"]
end

subgraph group_oop["Object-oriented examples"]
  node_inheritance["Inheritance layout"]
  node_composition["Inheritance composition"]
  node_complex["Complex operators<br/>[complex.cpp]"]
  node_polynomial["Complex polynomial<br/>[polynomial.cpp]"]
  node_poly_move["Templated polynomial"]
end

subgraph group_containers["Containers and ownership"]
  node_linked_raw["Raw-pointer list"]
  node_linked_smart["Smart-pointer list"]
  node_stack_queue["Stack and queue<br/>[stack_queue.cpp]"]
  node_smart_ptrs["Custom smart pointers"]
end

node_user(("Learner"))
node_output(("Console output"))

node_user -->|"runs example"| node_pointer1
node_user -->|"runs example"| node_pointer2
node_user -->|"runs example"| node_memory
node_user -->|"runs example"| node_references
node_user -->|"runs example"| node_complex
node_user -->|"runs example"| node_inheritance
node_user -->|"runs example"| node_linked_raw
node_user -->|"runs example"| node_linked_smart
node_user -->|"runs example"| node_stack_queue
node_user -->|"runs example"| node_smart_ptrs
node_user -->|"runs example"| node_polynomial
node_user -->|"runs example"| node_poly_move
node_pointer1 -->|"prints"| node_output
node_pointer2 -->|"prints"| node_output
node_memory -->|"prints"| node_output
node_references -->|"prints"| node_output
node_complex -->|"prints"| node_output
node_inheritance -->|"prints"| node_output
node_linked_raw -->|"prints"| node_output
node_linked_smart -->|"prints"| node_output
node_stack_queue -->|"prints"| node_output
node_smart_ptrs -->|"prints"| node_output
node_polynomial -->|"prints"| node_output
node_poly_move -->|"prints"| node_output

click node_pointer1 "https://github.com/huiyzhou/ece309_f26/blob/main/pointer1.c"
click node_pointer2 "https://github.com/huiyzhou/ece309_f26/blob/main/pointer2.c"
click node_memory "https://github.com/huiyzhou/ece309_f26/blob/main/mem_space.cpp"
click node_references "https://github.com/huiyzhou/ece309_f26/blob/main/ref_ex.cpp"
click node_overload "https://github.com/huiyzhou/ece309_f26/blob/main/func_overload.cpp"
click node_range "https://github.com/huiyzhou/ece309_f26/blob/main/range_ex.cpp"
click node_inheritance "https://github.com/huiyzhou/ece309_f26/blob/main/Inheritance_data_layout.cpp"
click node_composition "https://github.com/huiyzhou/ece309_f26/blob/main/inheritance_composition_con_des.cpp"
click node_complex "https://github.com/huiyzhou/ece309_f26/blob/main/complex.cpp"
click node_polynomial "https://github.com/huiyzhou/ece309_f26/blob/main/polynomial.cpp"
click node_poly_move "https://github.com/huiyzhou/ece309_f26/blob/main/ploynomial_T_move.cpp"
click node_linked_raw "https://github.com/huiyzhou/ece309_f26/blob/main/Singly_linked_list_r_5.cpp"
click node_linked_smart "https://github.com/huiyzhou/ece309_f26/blob/main/LinkedList_SmartPtr.cpp"
click node_stack_queue "https://github.com/huiyzhou/ece309_f26/blob/main/stack_queue.cpp"
click node_smart_ptrs "https://github.com/huiyzhou/ece309_f26/blob/main/my_own_smart_ptrs.cpp"
click node_hello "https://github.com/huiyzhou/ece309_f26/blob/main/hello.cpp"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_pointer1,node_pointer2,node_memory,node_references,node_overload,node_range,node_hello toneBlue
class node_inheritance,node_composition,node_complex,node_polynomial,node_poly_move toneAmber
class node_linked_raw,node_linked_smart,node_stack_queue,node_smart_ptrs toneMint
class node_user,node_output toneIndigo
```

## Components

### Language fundamentals

- [Pointer addresses](https://github.com/huiyzhou/ece309_f26/blob/main/pointer1.c): `pointer1.c`
- [Pointer playground](https://github.com/huiyzhou/ece309_f26/blob/main/pointer2.c): `pointer2.c`
- [Memory layout](https://github.com/huiyzhou/ece309_f26/blob/main/mem_space.cpp): `mem_space.cpp`
- [Value and references](https://github.com/huiyzhou/ece309_f26/blob/main/ref_ex.cpp): `ref_ex.cpp`
- [Function overloads](https://github.com/huiyzhou/ece309_f26/blob/main/func_overload.cpp): `func_overload.cpp`
- [Range examples](https://github.com/huiyzhou/ece309_f26/blob/main/range_ex.cpp): `range_ex.cpp`
- [Hello example](https://github.com/huiyzhou/ece309_f26/blob/main/hello.cpp): `hello.cpp`

### Object-oriented examples

- [Inheritance layout](https://github.com/huiyzhou/ece309_f26/blob/main/Inheritance_data_layout.cpp): `Inheritance_data_layout.cpp`
- [Inheritance composition](https://github.com/huiyzhou/ece309_f26/blob/main/inheritance_composition_con_des.cpp): `inheritance_composition_con_des.cpp`
- [Complex operators](https://github.com/huiyzhou/ece309_f26/blob/main/complex.cpp): `complex.cpp`
- [Complex polynomial](https://github.com/huiyzhou/ece309_f26/blob/main/polynomial.cpp): `polynomial.cpp`
- [Templated polynomial](https://github.com/huiyzhou/ece309_f26/blob/main/ploynomial_T_move.cpp): `ploynomial_T_move.cpp`

### Containers and ownership

- [Raw-pointer list](https://github.com/huiyzhou/ece309_f26/blob/main/Singly_linked_list_r_5.cpp): `Singly_linked_list_r_5.cpp`
- [Smart-pointer list](https://github.com/huiyzhou/ece309_f26/blob/main/LinkedList_SmartPtr.cpp): `LinkedList_SmartPtr.cpp`
- [Stack and queue](https://github.com/huiyzhou/ece309_f26/blob/main/stack_queue.cpp): `stack_queue.cpp`
- [Custom smart pointers](https://github.com/huiyzhou/ece309_f26/blob/main/my_own_smart_ptrs.cpp): `my_own_smart_ptrs.cpp`

### Other components

- **Learner**
- **Console output**

## Connections

- Learner → Pointer addresses: runs example
- Learner → Pointer playground: runs example
- Learner → Memory layout: runs example
- Learner → Value and references: runs example
- Learner → Complex operators: runs example
- Learner → Inheritance layout: runs example
- Learner → Raw-pointer list: runs example
- Learner → Smart-pointer list: runs example
- Learner → Stack and queue: runs example
- Learner → Custom smart pointers: runs example
- Learner → Complex polynomial: runs example
- Learner → Templated polynomial: runs example
- Pointer addresses → Console output: prints
- Pointer playground → Console output: prints
- Memory layout → Console output: prints
- Value and references → Console output: prints
- Complex operators → Console output: prints
- Inheritance layout → Console output: prints
- Raw-pointer list → Console output: prints
- Smart-pointer list → Console output: prints
- Stack and queue → Console output: prints
- Custom smart pointers → Console output: prints
- Complex polynomial → Console output: prints
- Templated polynomial → Console output: prints
