Data Structures in C++

Linked List

Implementation of a singly linked list.

untitled
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
        template<typename T>
class LinkedList {
    struct Node {
        T data;
        Node* next;
        Node(T d) : data(d), next(nullptr) {}
    };
    
    Node* head;
    
public:
    LinkedList() : head(nullptr) {}
    
    void push_front(T data) {
        Node* newNode = new Node(data);
        newNode->next = head;
        head = newNode;
    }
    
    void display() {
        Node* current = head;
        while(current) {
            cout << current->data << " -> ";
            current = current->next;
        }
        cout << "nullptr\n";
    }
};
      
CPP UTF-8
Lines: 28

Binary Search Tree

Implementation of a binary search tree.

untitled
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
        template<typename T>
class BST {
    struct Node {
        T data;
        Node *left, *right;
        Node(T d) : data(d), left(nullptr), right(nullptr) {}
    };
    
    Node* root;
    
    Node* insert(Node* node, T data) {
        if(!node) return new Node(data);
        
        if(data < node->data)
            node->left = insert(node->left, data);
        else if(data > node->data)
            node->right = insert(node->right, data);
            
        return node;
    }
    
public:
    BST() : root(nullptr) {}
    
    void insert(T data) {
        root = insert(root, data);
    }
};
      
CPP UTF-8
Lines: 28