Singly Linked List in C (All Methods)
Singly Linked List in C
Singly Linked List in C is one of the simplest linear data structures, that we use for storing our data in an easy and efficient way. Linked List in C comprises nodes like structures, which can further be divided into 2 parts in the case of a singly linked list. These two parts are-:
- Node – for storing the data.
- Pointer – for storing the address of the next node
Singly Linked List Program in Data Structure Implementation
We implement Linked List using user-defined data type, with the help of structure or struct.
Since the Singly linked list has only 1 pointer type value, which means it can store the address of only one node, which will be the next to it.
How to Construct a Singly Linked List in C ?
For constructing a singly linked list in C we make use of the structure keyword(struct), for creating user-defined data types, which can store various different types of data in the nodes of the singly linked list.
Each linked list has two parts –
- One for storing the desired data
- The other is a pointer type variable, which stores the address of the next node.
The syntax for creating a node
struct Node { int Data; Struct Node *next; };
This code will create a data type Node, which will be able to store two values-:
- int value – data
- pointer value – address of the next node
Insertion of a node
void insertStart (struct Node **head, int data) { struct Node *newNode = (struct Node *) malloc (sizeof (struct Node)); newNode - > data = data; newNode - > next = *head; //changing the new head to this freshly entered node *head = newNode; }
Deletion of a node
void deleteStart(struct Node **head) { struct Node *temp = *head; // if there are no nodes in Linked List can't delete if (*head == NULL) { printf ("Linked List Empty, nothing to delete"); return; } // move head to next node *head = (*head)->next; free (temp); }
Traversal in a Singly Linked List
void display(struct Node* node) { printf("Linked List: "); // as linked list will end when Node is Null while(node!=NULL){ printf("%d ",node->data); node = node->next; } printf("\n"); }
Code for Implementing Single Linked List in C
#include<stdio.h> #include<stdlib.h> struct Node { int data; struct Node *next; }; void deleteStart (struct Node **head) { struct Node *temp = *head; // if there are no nodes in Linked List can't delete if (*head == NULL) { printf ("Linked List Empty, nothing to delete"); return; } // move head to next node *head = (*head)->next; printf ("\n%d deleted\n", temp->data); free (temp); } void insertStart (struct Node **head, int data) { // dynamically create memory for this newNode struct Node *newNode = (struct Node *) malloc (sizeof (struct Node)); // assign data value newNode->data = data; // change the next node of this newNode // to current head of Linked List newNode->next = *head; //re-assign head to this newNode *head = newNode; printf ("\n%d Inserted\n", newNode->data); } void display (struct Node *node) { printf ("\nLinked List: "); // as linked list will end when Node is Null while (node != NULL) { printf ("%d ", node->data); node = node->next; } printf ("\n"); } int main () { struct Node *head = NULL; // Need '&' i.e. address as we need to change head insertStart (&head, 100); insertStart (&head, 80); insertStart (&head, 60); insertStart (&head, 40); insertStart (&head, 20); // No Need for '&' as not changing head in display operation display (head); deleteStart (&head); deleteStart (&head); display (head); return 0; }
Output
100 Inserted 80 Inserted 60 Inserted 40 Inserted 20 Inserted Linked List: 20 40 60 80 100 20 deleted 40 deleted Linked List: 60 80 100
Prime Course Trailer
Related Banners
Get PrepInsta Prime & get Access to all 200+ courses offered by PrepInsta in One Subscription
Time Complexity
For Singly Linked List
Best
O(1)
Average
O(n)
Worst
O(n)
Average Comparisons
(n+1)/2
Time Complexity
For Singly Linked List
Best
O(1)
Average
O(n)
Worst
O(n)
Average Comparisons
(n+1)/2
Get over 200+ course One Subscription
Courses like AI/ML, Cloud Computing, Ethical Hacking, C, C++, Java, Python, DSA (All Languages), Competitive Coding (All Languages), TCS, Infosys, Wipro, Amazon, DBMS, SQL and others
Singly Linked List
- Introduction to Linked List in Data Structure
- Linked List in – C | C++ | Java
- Singly Linked List in – C | C++ | Java
- Insertion in singly Linked List – C | C++ | Java
- Deletion in singly Linked List – C | C++ | Java
- Reverse a linked list without changing links between nodes (Data reverse only) – C | C++ | Java
- Linked List Insertion and Deletion – C | C++ | Java
- Reverse a linked list by changing links between nodes – C | C++ | Java
- Linked List insertion in the middle – C | C++ | Java
- Print reverse of a linked list without actually reversing – C |C++ | Java
- Search an element in a linked list – C | C++ | Java
- Insertion in a Sorted Linked List – C | C++ | Java
- Delete alternate nodes of a Linked List – C | C++ | Java
- Find middle of the linked list – C | C++ | Java
- Reverse a linked list in groups of given size – C | C++ | Java
- Find kth node from end of the linked list – C | C++ | Java
- Append the last n nodes of a linked list to the beginning of the list – C | C++ | Java
- Check whether linked list is palindrome or not – C | C++ | Java
- Fold a Linked List – C | C++ | Java
- Insert at a given position – C | C++ | Java
- Delete at a given position – C | C++ | Java
Singly Linked List
- Introduction to Linked List in Data Structure
Click Here - Linked List in –
- Singly Linked List in –
- Insertion in singly Linked List –
- Insertion at beginning in singly Linked List –
- Insertion at nth position in singly Linked List –
- Insertion at end in singly Linked List –
- Deletion in singly Linked List –
- Deletion from beginning in singly linked list :
- Deletion from nth position in singly linked list :
- Deletion from end in singly linked list :
- Linked List Insertion and Deletion –
C | C++ | Java - Reverse a linked list without changing links between nodes (Data reverse only) –
C | C++ | Java - Reverse a linked list by changing links between nodes –
- Print reverse of a linked list without actually reversing –
- Print reverse of a linked list without actually reversing –
- Insertion in the middle Singly Linked List –
- Insertion in a Sorted Linked List –
- Delete alternate nodes of a Linked List –
- Find middle of the linked list –
- Reverse a linked list in groups of given size –
- Find kth node from end of the linked list –
- Append the last n nodes of a linked list to the beginning of the list –
- Check whether linked list is palindrome or not –
- Fold a Linked List –
- Insert at given Position –
- Deletion at given Position –
Login/Signup to comment