LIST ADT USING LINKED LIST

 #include <iostream>

using namespace std;


struct Node {

    int data;

    Node* next;

};


Node* head = nullptr;


void create();

void insert();

void deletion();

void search();

void display();


int main() {

    int choice;

    cout << "\n Main Menu";

    cout << "\n 1.Create \n 2.Delete \n 3.Search \n 4.Insert \n 5.Display \n 6.Exit";

    do {

        cout << "\nEnter your choice: ";

        cin >> choice;

        switch (choice) {

            case 1: create(); break;

            case 2: deletion(); break;

            case 3: search(); break;

            case 4: insert(); break;

            case 5: display(); break;

            case 6: exit(0);

            default: cout << "Invalid choice, please select between 1-6\n";

        }

    } while (choice != 6);

    return 0;

}


void create() {

    int n, data;

    cout << "\nEnter the number of elements: ";

    cin >> n;

    cout << "\nEnter the elements:\n";

    for (int i = 0; i < n; ++i) {

        cin >> data;

        Node* newNode = new Node{data, nullptr};

        if (!head) {

            head = newNode;

        } else {

            Node* temp = head;

            while (temp->next) temp = temp->next;

            temp->next = newNode;

        }

    }

}


void deletion() {

    int value;

    cout << "Enter the number you want to delete: ";

    cin >> value;

    Node* temp = head;

    Node* prev = nullptr;

    while (temp && temp->data != value) {

        prev = temp;

        temp = temp->next;

    }

    if (!temp) {

        cout << value << " not found\n";

        return;

    }

    if (!prev) {

        head = head->next;

    } else {

        prev->next = temp->next;

    }

    delete temp;

    cout << value << " deleted\n";

}


void search() {

    int value;

    cout << "Enter the number to search: ";

    cin >> value;

    Node* temp = head;

    int position = 1;

    while (temp) {

        if (temp->data == value) {

            cout << "Value found at position " << position << "\n";

            return;

        }

        temp = temp->next;

        ++position;

    }

    cout << "Value not found\n";

}


void insert() {

    int n, data;

    cout << "\nEnter the number of elements to insert: ";

    cin >> n;

    cout << "\nEnter the elements:\n";

    for (int i = 0; i < n; ++i) {

        cin >> data;

        Node* newNode = new Node{data, nullptr};

        if (!head) {

            head = newNode;

        } else {

            Node* temp = head;

            while (temp->next) temp = temp->next;

            temp->next = newNode;

        }

    }

}


void display() {

    Node* temp = head;

    while (temp) {

        cout << temp->data << " ";

        temp = temp->next;

    }

    cout << "\n";

}

Comments

Popular posts from this blog

LIST ADT USING LINKED LIST

CLASSES CREATION

SORTING PROGRAM