Skip to content

Instantly share code, notes, and snippets.

@AhmedMaad
Last active November 13, 2022 13:12
Show Gist options
  • Save AhmedMaad/4c92e355153a7f7ad0652e840b926fba to your computer and use it in GitHub Desktop.
Save AhmedMaad/4c92e355153a7f7ad0652e840b926fba to your computer and use it in GitHub Desktop.
#include <iostream>
using namespace std;
struct node{
int data;
node *next;
};
void display(node** head){
node * temp = *head;
while(temp != NULL){
cout<<temp->data<<endl;
temp = temp->next;
}
}
void deleteFirst(node** head){
node *first_node = *head;
*head = first_node->next;
delete(first_node);
}
void deleteSpecific(int value, node** head){
node *current = *head;
node *previous = *head;
if(current -> data == value){
*head = current -> next;
delete(current);
}
while(current->data != value){
previous = current;
current = current -> next;
}
previous->next = current -> next;
delete(current);
}
void insertFirst(int value, node** head){
node* new_node = new node;
new_node -> data = value;
if(*head == NULL){
new_node -> next = NULL;
*head = new_node;
}
else{
new_node->next = *head;
*head = new_node;
}
}
void insertLast(int value, node** head){
node* new_node = new node;
new_node-> data = value;
new_node -> next = NULL;
if(*head == NULL){
cout<<"First node as last"<<endl;
*head = new_node;
}
else{
node * temp = *head;
while(temp->next != NULL)
temp = temp -> next;
temp -> next = new_node;
}
}
int main() {
node* head = NULL;
//Insert First
insertFirst(1, &head);
insertFirst(2, &head);
insertFirst(3, &head);
//Insert Last
insertLast(10, &head);
insertLast(11, &head);
insertLast(12, &head);
//List All data
display(&head);
//Delete node at beginning
deleteFirst(&head);
//List All data after deleting first node
display(&head);
//Delete node with a value of 10
deleteSpecific(10, &head);
//Displaying all nodes
display(&head);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment