c++ linked list code example

Example 1: linkedlist implementation in c++

#include <iostream>

using namespace std;

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

class linked_list
{
private:
    node *head,*tail;
public:
    linked_list()
    {
        head = NULL;
        tail = NULL;
    }

    void add_node(int n)
    {
        node *tmp = new node;
        tmp->data = n;
        tmp->next = NULL;

        if(head == NULL)
        {
            head = tmp;
            tail = tmp;
        }
        else
        {
            tail->next = tmp;
            tail = tail->next;
        }
    }
};

int main()
{
    linked_list a;
    a.add_node(1);
    a.add_node(2);
    return 0;
}

Example 2: cpp linked list

struct Node {
  int data;
  struct Node *next;
};

Example 3: doubly linked list python

class ListNode:
    def __init__(self, value, prev=None, next=None):
        self.prev = prev
        self.value = value
        self.next = next

class DoublyLinkedList:
    def __init__(self, node=None):
        self.head = node
        self.tail = node
        self.length = 1 if node is not None else 0

    def __len__(self):
        return self.length
   
  	def add_to_head(self, value):
        new_node = ListNode(value, None, None)
        self.length += 1
        if not self.head and not self.tail:
            self.head = new_node
            self.tail = new_node
        else:
            new_node.next = self.head
            self.head.prev = new_node
            self.head = new_node
 
    def remove_from_head(self):
        value = self.head.value
        self.delete(self.head)
        return value

    def add_to_tail(self, value):
        new_node = ListNode(value, None, None)
        self.length += 1
        if not self.tail and not self.head:
            self.tail = new_node
            self.head = new_node
        else:
            new_node.prev = self.tail
            self.tail.next = new_node
            self.tail = new_node
            

    def remove_from_tail(self):
        value = self.tail.value
        self.delete(self.tail)
        return value
            
    def move_to_front(self, node):
        if node is self.head:
            return
        value = node.value
        if node is self.tail:
            self.remove_from_tail()
        else:
            node.delete()
            self.length -= 1
        self.add_to_head(value)
        
    def move_to_end(self, node):
        if node is self.tail:
            return
        value = node.value
        if node is self.head:
            self.remove_from_head()
            self.add_to_tail(value)
        else:
            node.delete()
            self.length -= 1
            self.add_to_tail(value)

    def delete(self, node):
        self.length -= 1
        if not self.head and not self.tail:
            return
        if self.head == self.tail:
            self.head = None
            self.tail = None
        elif self.head == node:
            self.head = node.next
            node.delete()
        elif self.tail == node:
            self.tail = node.prev
            node.delete()
        else:
            node.delete()

    def get_max(self):
        if not self.head:
            return None
        max_val = self.head.value
        current = self.head
        while current:
            if current.value > max_val:
                max_val = current.value
            current = current.next
        return max_val

Example 4: linked list in c++ stl

#include <bits/stdc++.h>
#include <iostream>
#include <list>
#include <iterator>

#define ll long long

using namespace std;

//function to print all the elements of the linked list
void showList(list <int> l){
	list <int> :: iterator it; //create an iterator according to the data structure
	for(it = l.begin(); it != l.end(); it++){
		cout<<*it<<" ";
	}
	
}	


int main(){
	
	list <int> l1;
	list <int> l2;
	
	for(int i=0; i<10; i++){
		l1.push_back(i*2); //fill list 1 with multiples of 2
		l2.push_back(i*3); //fill list 2 with multiples of 3
	}
	
	cout<<"content of list 1 is "<<endl;
	showList(l1);
	cout<<endl;
	
	cout<<"content of list 2 is "<<endl;
	showList(l2);
	cout<<endl;
	
	//reverse the first list
	l1.reverse();
	showList(l1);
	cout<<endl;
	
	//sort the first list
	l1.sort();
	showList(l1);
	cout<<endl;
	
	//removing an element from both sides
	l2.pop_front();
	l2.pop_back();
	
	//adding an element from both sides
	l2.push_back(10);
	l2.push_front(20);
	
	
    return 0;
}

Example 5: java linked list iterator

// Java code to illustrate listIterator() 
import java.io.*; 
import java.util.LinkedList; 
import java.util.ListIterator; 
  
public class LinkedListDemo { 
    public static void main(String args[]) 
    { 
        // Creating an empty LinkedList 
        LinkedList<String> list = new LinkedList<String>(); 
  
        // Use add() method to add elements in the list 
        list.add("Geeks"); 
        list.add("for"); 
        list.add("Geeks"); 
        list.add("10"); 
        list.add("20"); 
  
        // Displaying the linkedlist 
        System.out.println("LinkedList:" + list); 
          
        // Setting the ListIterator at a specified position 
        ListIterator list_Iter = list.listIterator(2); 
  
        // Iterating through the created list from the position 
        System.out.println("The list is as follows:"); 
        while(list_Iter.hasNext()){ 
           System.out.println(list_Iter.next()); 
        } 
    } 
}

Example 6: cpp linked list

#include <bits/stdc++.h>

using namespace std;
int main() {

    class Node {
        public:
            int data;
        Node * next;
    };
}

Tags: