Linked List Implementation Using Cpp

  1. Home
  2. Tutorials
  3. Data Structure And Algorithms
  4. Data Structure And Algorithms Programs
  5. Linked List
  6. Program

#include <iostream>
using namespace std;
struct node {
    int data;
    node *next;
};

node *head; // head pointer to traverse nodes

void insertAtBeg(int val) {
    node *temp = new node();  // allocating memory to node pointer
    // (node*)malloc(sizeof(node));
    temp->data = val;
    temp->next = head;
    head = temp;
}

void insertAtEnd(int val) {
    node *temp = new node();
    // (node*)malloc(sizeof(node));
    temp->data = val;
    temp->next = NULL;
    if(head == NULL) {
        head = temp; // first node of link list
    } else {
        node *ptr = head;
        while(ptr->next != NULL) {
            ptr = ptr->next;
        }
        ptr->next = temp;
    }
}

void display() { // Method to display nodes
    if(head == NULL) {
        cout<<"List is Empty!.......";
        return;
    }
    node *temp;
    temp = head; // temporarily assigning head to temp node
    while(temp != NULL) {  // loop until last node of list
        cout<<temp->data<<"  ->   ";
        temp = temp->next;   // move to next node using pointer
    }
    cout<<"NULL"<<endl;  // after printing value of last node
}

void deleteNode(int val) {
    if(head == NULL) {
        cout<<"List is Empty!.......";
        return;
    }
    if(head->data == val) {
        cout<<"Deleting Head Node!....."<<endl;
        node *temp = head;
        head = head->next;
        delete temp;  // returning
        return;
    }
    node *temp;
    temp = head;
    int flag = 0;
    while(temp != NULL) {
        if(temp->next->data == val) {
            flag = 1;
            break;
        }
        temp = temp->next;
    }
    if(flag == 1) {
        temp->next = temp->next->next;
    }
}


void search(int val) {
    if(head == NULL) {
        cout<<"List is Empty!.......";
        return;
    }
    node *temp = head;
    int flag = 0;
    int pos = 1;
    while(temp != NULL) {
        if(temp->data == val) {
            flag = 1;
            break;  // terminate loop if value found
        }
        temp = temp->next;
        pos++;  // increment in position variable
    }
    if(flag == 1) {  // check either value found
        cout<<"Value is found at "<<pos<<endl;
    } else {
        cout<<"Value is not found"<<endl;
    }
}

int main(int argc, char** argv) {
    
    insertAtBeg(30);
    insertAtBeg(23);
    insertAtEnd(56);
    insertAtEnd(66);
    insertAtBeg(90);
    insertAtBeg(16);
    insertAtBeg(160);
    display();
    search(90);
    return 0;
}

Output

insertion and searching in singly linked list using c++

Comments
Login to TRACK of Comments.