UNIVERSITY OF WEST ATTICA
SCHOOL OF ENGINEERING
DEPARTMENT OF COMPUTER ENGINEERING AND INFORMATICS
University of West Attica · Department of Computer Engineering and Informatics
Data Structures
Vasileios Evangelos Athanasiou
Student ID: 19390005
Supervision
Supervisor: Georgios Bardis, Assistant Professor
Co-supervisor: Georgios Meletiou, Laboratory Teaching Staff
Co-supervisor: Georgios Tselikis, Postdoctoral Researcher
Athens, November 2022
This code implements a Doubly Linked List in C to manage a student database. It supports sorted insertion by Student ID (AM), searching, modification, and deletion.
| Section | Folder/File | Description |
|---|---|---|
| 1 | INSTALL.md |
Installation and compilation instructions |
| 2 | README.md |
Project overview and usage guide |
| 3 | assign/ |
Assignment description images |
| 3.1 | assign/List.png |
Linked list assignment image (English) |
| 3.2 | assign/Λίστες.png |
Linked list assignment image (Greek) |
| 4 | src/ |
Source code of the linked list implementation |
| 4.1 | src/main.c |
Program entry point and example usage of the list |
| 4.2 | src/list.h |
Linked list structure definitions and function prototypes |
| 4.3 | src/list.c |
Implementation of linked list operations |
New students are inserted automatically in ascending order based on AM (Student ID).
Each node contains:
nextpointer → points to the next nodeprevpointer → points to the previous node
This allows efficient forward and backward traversal and simplifies deletion.
Students can be searched by:
- Student ID (AM) — unique identifier
- Name
The system prevents duplicate AM values, ensuring each student ID is unique.
A destroyList function releases all allocated memory to prevent memory leaks.
The program is built around three main structures.
Stores the student data:
am- Student IDname- Student namesemester- Current semester
Represents a node in the doubly linked list.
Each node contains:
- A
studentrecord - Pointer to the next node
- Pointer to the previous node
A wrapper structure that stores:
headpointer - first element of the listtailpointer - last element of the list
This simplifies access to both ends of the list.
