linked_list.cpp 2.7 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
#include <iostream>

struct node {
    int val;
    node *next;
};

node *start;

void insert(int x) {
    node *t = start;
    node *n = new node;
    n->val = x;
    n->next = NULL;
    if (start != NULL) {
        while (t->next != NULL) {
            t = t->next;
        }
        t->next = n;
    } else {
        start = n;
    }
}

void remove(int x) {
    if (start == NULL) {
        std::cout << "\nLinked List is empty\n";
        return;
    } else if (start->val == x) {
        node *temp = start;
        start = start->next;
        delete temp;
        return;
    }

    node *temp = start, *parent = start;

    while (temp != NULL && temp->val != x) {
        parent = temp;
        temp = temp->next;
    }

    if (temp == NULL) {
        std::cout << std::endl << x << " not found in list\n";
        return;
    }

    parent->next = temp->next;
    delete temp;
}

void search(int x) {
    node *t = start;
    int found = 0;
    while (t != NULL) {
        if (t->val == x) {
            std::cout << "\nFound";
            found = 1;
            break;
        }
        t = t->next;
    }
    if (found == 0) {
        std::cout << "\nNot Found";
    }
}

void show() {
    node *t = start;
    while (t != NULL) {
        std::cout << t->val << "\t";
        t = t->next;
    }
}

void reverse() {
    node *first = start;
    if (first != NULL) {
        node *second = first->next;
        while (second != NULL) {
            node *tem = second->next;
            second->next = first;
            first = second;
            second = tem;
        }
        start->next = NULL;
        start = first;
    } else {
        std::cout << "\nEmpty list";
    }
}

int main() {
    int choice, x;
    do {
        std::cout << "\n1. Insert";
        std::cout << "\n2. Delete";
        std::cout << "\n3. Search";
        std::cout << "\n4. Print";
        std::cout << "\n5. Reverse";
        std::cout << "\n0. Exit";
        std::cout << "\n\nEnter you choice : ";
        std::cin >> choice;
        switch (choice) {
        case 1:
            std::cout << "\nEnter the element to be inserted : ";
            std::cin >> x;
            insert(x);
            break;
        case 2:
            std::cout << "\nEnter the element to be removed : ";
            std::cin >> x;
            remove(x);
            break;
        case 3:
            std::cout << "\nEnter the element to be searched : ";
            std::cin >> x;
            search(x);
            break;
        case 4:
            show();
            std::cout << "\n";
            break;
        case 5:
            std::cout << "The reversed list: \n";
            reverse();
            show();
            std::cout << "\n";
            break;
        }
    } while (choice != 0);

    return 0;
}