NOTES USING LINKED LIST
Report submitted in partial fulfilment of the requirement for the degree of
Bachelor of Technology
In
Computer science & Engineering
By
Aman Jain , Aryan Goutam
To
Dr Geetika , HOD of CSE department
Maharaja Surajmal Institute of Technology
Affiliated to Guru Gobind Singh Indraprastha University
Janakpuri, New Delhi-58
2022-26
INTRODUCTION
Efficient data structures play a pivotal role. The various data structures are array , stack, queue, linked list,
trees , graphs. One such powerful structure is the linked list, revered for its flexibility and dynamic nature. In
the context of creating a notes management system, employing a linked list data structure offers a scalable
and adaptable solution. Linked list is more versatile as insertion and deletion is easier using linked list.
The primary goal of this project is to develop a notes management system that harnesses the versatility of a
linked list. This system will enable users to create, display and delete notes seamlessly, offering a user-
friendly interface for efficient note-taking and management.
Key Features:
1. Linked List Implementation: Utilizing the linked list structure to create a dynamic repository for notes,
allowing for easy insertion, deletion, and traversal of notes.
2. Note Creation and Editing: Providing functionalities to add notes empowering users to add their content.
3. Deletion: Allows the user to delete the notes that are no longer required by them hence freeing up memory.
CODE:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Note {
int serialNumber;
char content[100];
struct Note* next;
};
struct Note* createNote() {
struct Note* newNote = (struct Note*)malloc(sizeof(struct Note));
if (newNote == NULL) {
printf("Memory allocation failed\n");
return;
newNote->next = NULL;
return newNote;
void addNote(struct Note** head, const char* content) {
struct Note* newNote = createNote();
static int serialCounter = 1;
newNote->serialNumber = serialCounter++;
strncpy(newNote->content, content, sizeof(newNote->content) - 1);
newNote->next = *head;
*head = newNote;
printf("Note added successfully\n");
void displayNotes(const struct Note* head) {
printf("Notes:\n");
while (head != NULL) {
printf("%d. %s\n", head->serialNumber, head->content);
head = head->next;
void deleteNote(struct Note** head, int serialNumber) {
struct Note* current = *head;
struct Note* prev = NULL;
while (current != NULL && current->serialNumber != serialNumber) {
prev = current;
current = current->next;
if (current != NULL) {
if (prev == NULL) {
*head = current->next;
} else {
prev->next = current->next;
free(current);
printf("Note deleted successfully\n");
} else {
printf("Note with serial number %d not found\n", serialNumber);
void freeList(struct Note* head) {
while (head != NULL) {
struct Note* temp = head;
head = head->next;
free(temp);
int main() {
struct Note* head = NULL;
int choice;
char content[100];
int serialNumber;
do {
printf("\nNotes App Menu:\n");
printf("1. Add Note\n");
printf("2. Display Notes\n");
printf("3. Delete Note by Serial Number\n");
printf("4. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("Enter the content of the note: ");
scanf(" %[^\n]", content);
addNote(&head, content);
break;
case 2:
displayNotes(head);
break;
case 3:
printf("Enter the serial number of the note to delete: ");
scanf("%d", &serialNumber);
deleteNote(&head, serialNumber);
break;
case 4:
printf("Exiting the notes app\n");
break;
default:
printf("Invalid choice. Please try again.\n");
} while (choice != 4);
freeList(head);
return 0;
RESULT:
FUTURE SCOPE:
The future scope of a notes management system using a linked list data structure is quite
[Link] improving the user interface and experience by incorporating user feedback,
implementing more intuitive design elements, and refining functionalities based on user preferences.
Allowing noting down important data and knowledge and accessing it whenever [Link] just students
but professionals too.
CONCLUSION:
This project aims to leverage the advantages of a linked list data structure to create an efficient notes
management system. By offering an organized and adaptable platform, users will be able to streamline their
note-taking process and access information effortlessly.
REFERENCES:
Schaum’s Outlines( data structures with C): Data Structures with C (Schaum's Outline Series) is a vital
guidebook for such students and helps understand the conceptS and theories behind data structures. The
book deals with data structures in a comprehensive and exhaustive manner. Various new educational
features that have been incorporated in this book help the student grasp to topics effortlessly.