Data Structures and Algorithms with C
Undergraduate, Giresun University, Computer Engineering, 2026
This course studies data structures and algorithms through their memory representation and their implementation in C. Each topic is developed from the abstract data type to a working C99/C11 implementation with pointers, dynamic memory, and structures, together with its complexity analysis. The course covers arrays and structures, linked lists, stacks, queues, lists, trees, priority queues and heaps, hash tables, search trees, graphs, sets and union-find, as well as recursion, backtracking, spanning trees, shortest paths, and sorting algorithms.
Ders Planı
C ile Veri Yapıları ve Algoritmalar - Ders Planı (HTML)
Course resources
- Veri Yapıları ve Algoritmalar 1 — Mustafa Ege (pdf)
- Veri Yapıları ve Algoritmalar 2 — Mustafa Ege (pdf)
Chapter 1: Introduction and Algorithm Analysis
Data, abstraction, correctness, and cost. This chapter introduces abstract data types and the asymptotic analysis used throughout the course.
Chapter 2: Arrays and Structures
Contiguous memory, records, and sparse representations in C.
Chapter 3: Linked Lists
Nodes, links, and dynamic structures built with pointers and dynamic memory.
Chapter 4: Stacks
LIFO order, the call stack, and expression processing.
Chapter 5: Queues
FIFO order, circular buffers, and service queues.
Chapter 6: List ADT and Generalized Lists
The list contract, its implementations, and recursive list structures.
Chapter 7: Trees
Hierarchies, binary tree representation, and traversals.
Chapter 8: Priority Queues and Heaps
Fast access to the largest or smallest element on a complete binary tree.
Chapter 9: Hash Tables
From keys to addresses, collisions, and collision resolution.
Chapter 10: Search Trees
Binary search tree order, deletion, and balancing.
Chapter 11: Graphs
Relations, graph traversals, and path problems.
Chapter 12: Sets and Union-Find
Membership, union, and disjoint components.
Chapter 13: Recursion, Binary Search, and Backtracking
Recursive problem solving, binary search, and systematic search with backtracking.
Chapter 14: Polynomials and Sparse Matrices
Applications of arrays and linked lists to polynomial arithmetic and sparse matrices.
Chapter 15: Stack and Queue Applications
Stacks and queues as the working memory of algorithms: postfix expression evaluation and maze solving with backtracking.
Chapter 16: Threaded Binary Trees
Using empty links as threads for traversal without a stack.
Chapter 17: Minimum Spanning Trees
Spanning trees and the Kruskal and Prim algorithms.
Chapter 18: Shortest Paths and Activity Networks
Dijkstra’s algorithm with distance and predecessor arrays, edge relaxation, and topological ordering of activity networks.
Chapter 19: Basic Sorting Algorithms
Insertion sort and selection sort, the sorting routine contract in C, and choosing a method by data distribution.
Chapter 20: Advanced Sorting Algorithms
Divide-and-conquer sorting: the merge step of merge sort and partitioning in quick sort, with their complexity.