Data Structures and Algorithms with C

Undergraduate, Giresun University, Computer Engineering, 2026

data structures and algorithms with c 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.