A linked list is a sequence of data structures, which are connected together via links. #19

Description

@Manish4Kumar

A linked list is a sequence of data structures, which are connected together via links.

Linked List is a sequence of links which contains items. Each link contains a connection to another link. Linked list is the second most-used data structure after array. Following are the important terms to understand the concept of Linked List.

Link − Each link of a linked list can store a data called an element.

Next − Each link of a linked list contains a link to the next link called Next.

Linkedlist − A Linked List contains the connection link to the first link called First.

Linked List Representation
Linked list can be visualized as a chain of nodes, where every node points to the next node.

Linked List
As per the above illustration, following are the important points to be considered.

Linked List contains a link element called first.

Each link carries a data field(s) and a link field called next.

Each link is linked with its next link using its next link.

Last link carries a link as null to mark the end of the list.

Types of Linked List
Following are the various types of linked list.

Simple Linked List − Item navigation is forward only.

Doubly Linked List − Items can be navigated forward and backward.

Circular Linked List − Last item contains link of the first element as next and the first element has a link to the last element as previous.

Basic Operations
Following are the basic operations supported by a list.

Insertion − Adds an element at the beginning of the list.

Deletion − Deletes an element at the beginning of the list.

Display − Displays the complete list.

Search − Searches an element using the given key.

Delete − Deletes an element using the given key.

Insertion Operation
Adding a new node in linked list is a more than one step activity. We shall learn this with diagrams here. First, create a node using the same structure and find the location where it has to be inserted.

Linked List Insertion
Imagine that we are inserting a node B (NewNode), between A (LeftNode) and C (RightNode). Then point B.next to C −

NewNode.next −> RightNode;
It should look like this −

Linked List Insertion
Now, the next node at the left should point to the new node.

LeftNode.next −> NewNode;
Linked List Insertion
This will put the new node in the middle of the two. The new list should look like this −

Linked List Insertion
Similar steps should be taken if the node is being inserted at the beginning of the list. While inserting it at the end, the second last node of the list should point to the new node and the new node will point to NULL.

Deletion Operation
Deletion is also a more than one step process. We shall learn with pictorial representation. First, locate the target node to be removed, by using searching algorithms.

Linked List Deletion
The left (previous) node of the target node now should point to the next node of the target node −

LeftNode.next −> TargetNode.next;
Linked List Deletion
This will remove the link that was pointing to the target node. Now, using the following code, we will remove what the target node is pointing at.

TargetNode.next −> NULL;
Linked List Deletion
We need to use the deleted node. We can keep that in memory otherwise we can simply deallocate memory and wipe off the target node completely.

Linked List Deletion
Reverse Operation
This operation is a thorough one. We need to make the last node to be pointed by the head node and reverse the whole linked list.

Linked List Reverse Operation
First, we traverse to the end of the list. It should be pointing to NULL. Now, we shall make it point to its previous node −

Linked List Reverse Operation
We have to make sure that the last node is not the last node. So we'll have some temp node, which looks like the head node pointing to the last node. Now, we shall make all left side nodes point to their previous nodes one by one.

Linked List Reverse Operation
Except the node (first node) pointed by the head node, all nodes should point to their predecessor, making them their new successor. The first node will point to NULL.

Linked List Reverse Operation
We'll make the head node point to the new first node by using the temp node.

Doubly Linked List is a variation of Linked list in which navigation is possible in both ways, either forward and backward easily as compared to Single Linked List. Following are the important terms to understand the concept of doubly linked list.

Link − Each link of a linked list can store a data called an element.

Next − Each link of a linked list contains a link to the next link called Next.

Prev − Each link of a linked list contains a link to the previous link called Prev.

LinkedList − A Linked List contains the connection link to the first link called First and to the last link called Last.

Doubly Linked List Representation
Doubly Linked List
As per the above illustration, following are the important points to be considered.

Doubly Linked List contains a link element called first and last.

Each link carries a data field(s) and two link fields called next and prev.

Each link is linked with its next link using its next link.

Each link is linked with its previous link using its previous link.

The last link carries a link as null to mark the end of the list.

Basic Operations
Following are the basic operations supported by a list.

Insertion − Adds an element at the beginning of the list.

Deletion − Deletes an element at the beginning of the list.

Insert Last − Adds an element at the end of the list.

Delete Last − Deletes an element from the end of the list.

Insert After − Adds an element after an item of the list.

Delete − Deletes an element from the list using the key.

Display forward − Displays the complete list in a forward manner.

Display backward − Displays the complete list in a backward manner.

Insertion Operation
Following code demonstrates the insertion operation at the beginning of a doubly linked list.

Example
//insert link at the first location
void insertFirst(int key, int data) {

//create a link
struct node link = (struct node) malloc(sizeof(struct node));
link->key = key;
link->data = data;

if(isEmpty()) {
//make it the last link
last = link;
} else {
//update first prev link
head->prev = link;
}

//point it to old first link
link->next = head;

//point first to new first link
head = link;
}
Deletion Operation
Following code demonstrates the deletion operation at the beginning of a doubly linked list.

Example
//delete first item
struct node* deleteFirst() {

//save reference to first link
struct node *tempLink = head;

//if only one link
if(head->next == NULL) {
last = NULL;
} else {
head->next->prev = NULL;
}

head = head->next;

//return the deleted link
return tempLink;
}
Insertion at the End of an Operation
Following code demonstrates the insertion operation at the last position of a doubly linked list.

Example
//insert link at the last location
void insertLast(int key, int data) {

//create a link
struct node link = (struct node) malloc(sizeof(struct node));
link->key = key;
link->data = data;

if(isEmpty()) {
//make it the last link
last = link;
} else {
//make link a new last link
last->next = link;

 //mark old last node as prev of new link
link->prev = last;

}

//point last to new last node
last = link;
}

Originally posted by @Manish4Kumar in #18 (comment)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
       blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
      }
      } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
      })();
      (function(){
      try {
      var __m = "github.com";
      var __re = new RegExp('^' + "github\\.com" + '
      
      Skip to content

      A linked list is a sequence of data structures, which are connected together via links. #19

      Description

      @Manish4Kumar

      A linked list is a sequence of data structures, which are connected together via links.

      Linked List is a sequence of links which contains items. Each link contains a connection to another link. Linked list is the second most-used data structure after array. Following are the important terms to understand the concept of Linked List.

      Link − Each link of a linked list can store a data called an element.

      Next − Each link of a linked list contains a link to the next link called Next.

      Linkedlist − A Linked List contains the connection link to the first link called First.

      Linked List Representation
      Linked list can be visualized as a chain of nodes, where every node points to the next node.

      Linked List
      As per the above illustration, following are the important points to be considered.

      Linked List contains a link element called first.

      Each link carries a data field(s) and a link field called next.

      Each link is linked with its next link using its next link.

      Last link carries a link as null to mark the end of the list.

      Types of Linked List
      Following are the various types of linked list.

      Simple Linked List − Item navigation is forward only.

      Doubly Linked List − Items can be navigated forward and backward.

      Circular Linked List − Last item contains link of the first element as next and the first element has a link to the last element as previous.

      Basic Operations
      Following are the basic operations supported by a list.

      Insertion − Adds an element at the beginning of the list.

      Deletion − Deletes an element at the beginning of the list.

      Display − Displays the complete list.

      Search − Searches an element using the given key.

      Delete − Deletes an element using the given key.

      Insertion Operation
      Adding a new node in linked list is a more than one step activity. We shall learn this with diagrams here. First, create a node using the same structure and find the location where it has to be inserted.

      Linked List Insertion
      Imagine that we are inserting a node B (NewNode), between A (LeftNode) and C (RightNode). Then point B.next to C −

      NewNode.next −> RightNode;
      It should look like this −

      Linked List Insertion
      Now, the next node at the left should point to the new node.

      LeftNode.next −> NewNode;
      Linked List Insertion
      This will put the new node in the middle of the two. The new list should look like this −

      Linked List Insertion
      Similar steps should be taken if the node is being inserted at the beginning of the list. While inserting it at the end, the second last node of the list should point to the new node and the new node will point to NULL.

      Deletion Operation
      Deletion is also a more than one step process. We shall learn with pictorial representation. First, locate the target node to be removed, by using searching algorithms.

      Linked List Deletion
      The left (previous) node of the target node now should point to the next node of the target node −

      LeftNode.next −> TargetNode.next;
      Linked List Deletion
      This will remove the link that was pointing to the target node. Now, using the following code, we will remove what the target node is pointing at.

      TargetNode.next −> NULL;
      Linked List Deletion
      We need to use the deleted node. We can keep that in memory otherwise we can simply deallocate memory and wipe off the target node completely.

      Linked List Deletion
      Reverse Operation
      This operation is a thorough one. We need to make the last node to be pointed by the head node and reverse the whole linked list.

      Linked List Reverse Operation
      First, we traverse to the end of the list. It should be pointing to NULL. Now, we shall make it point to its previous node −

      Linked List Reverse Operation
      We have to make sure that the last node is not the last node. So we'll have some temp node, which looks like the head node pointing to the last node. Now, we shall make all left side nodes point to their previous nodes one by one.

      Linked List Reverse Operation
      Except the node (first node) pointed by the head node, all nodes should point to their predecessor, making them their new successor. The first node will point to NULL.

      Linked List Reverse Operation
      We'll make the head node point to the new first node by using the temp node.

      Doubly Linked List is a variation of Linked list in which navigation is possible in both ways, either forward and backward easily as compared to Single Linked List. Following are the important terms to understand the concept of doubly linked list.

      Link − Each link of a linked list can store a data called an element.

      Next − Each link of a linked list contains a link to the next link called Next.

      Prev − Each link of a linked list contains a link to the previous link called Prev.

      LinkedList − A Linked List contains the connection link to the first link called First and to the last link called Last.

      Doubly Linked List Representation
      Doubly Linked List
      As per the above illustration, following are the important points to be considered.

      Doubly Linked List contains a link element called first and last.

      Each link carries a data field(s) and two link fields called next and prev.

      Each link is linked with its next link using its next link.

      Each link is linked with its previous link using its previous link.

      The last link carries a link as null to mark the end of the list.

      Basic Operations
      Following are the basic operations supported by a list.

      Insertion − Adds an element at the beginning of the list.

      Deletion − Deletes an element at the beginning of the list.

      Insert Last − Adds an element at the end of the list.

      Delete Last − Deletes an element from the end of the list.

      Insert After − Adds an element after an item of the list.

      Delete − Deletes an element from the list using the key.

      Display forward − Displays the complete list in a forward manner.

      Display backward − Displays the complete list in a backward manner.

      Insertion Operation
      Following code demonstrates the insertion operation at the beginning of a doubly linked list.

      Example
      //insert link at the first location
      void insertFirst(int key, int data) {

      //create a link
      struct node link = (struct node) malloc(sizeof(struct node));
      link->key = key;
      link->data = data;

      if(isEmpty()) {
      //make it the last link
      last = link;
      } else {
      //update first prev link
      head->prev = link;
      }

      //point it to old first link
      link->next = head;

      //point first to new first link
      head = link;
      }
      Deletion Operation
      Following code demonstrates the deletion operation at the beginning of a doubly linked list.

      Example
      //delete first item
      struct node* deleteFirst() {

      //save reference to first link
      struct node *tempLink = head;

      //if only one link
      if(head->next == NULL) {
      last = NULL;
      } else {
      head->next->prev = NULL;
      }

      head = head->next;

      //return the deleted link
      return tempLink;
      }
      Insertion at the End of an Operation
      Following code demonstrates the insertion operation at the last position of a doubly linked list.

      Example
      //insert link at the last location
      void insertLast(int key, int data) {

      //create a link
      struct node link = (struct node) malloc(sizeof(struct node));
      link->key = key;
      link->data = data;

      if(isEmpty()) {
      //make it the last link
      last = link;
      } else {
      //make link a new last link
      last->next = link;

       //mark old last node as prev of new link
      link->prev = last;
      

      }

      //point last to new last node
      last = link;
      }

      Originally posted by @Manish4Kumar in #18 (comment)

      Metadata

      Metadata

      Assignees

      No one assigned

        Labels

        No labels
        No labels

        Projects

        No projects

          Milestone

          No milestone

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
          Skip to content

          A linked list is a sequence of data structures, which are connected together via links. #19

          Description

          @Manish4Kumar

          A linked list is a sequence of data structures, which are connected together via links.

          Linked List is a sequence of links which contains items. Each link contains a connection to another link. Linked list is the second most-used data structure after array. Following are the important terms to understand the concept of Linked List.

          Link − Each link of a linked list can store a data called an element.

          Next − Each link of a linked list contains a link to the next link called Next.

          Linkedlist − A Linked List contains the connection link to the first link called First.

          Linked List Representation
          Linked list can be visualized as a chain of nodes, where every node points to the next node.

          Linked List
          As per the above illustration, following are the important points to be considered.

          Linked List contains a link element called first.

          Each link carries a data field(s) and a link field called next.

          Each link is linked with its next link using its next link.

          Last link carries a link as null to mark the end of the list.

          Types of Linked List
          Following are the various types of linked list.

          Simple Linked List − Item navigation is forward only.

          Doubly Linked List − Items can be navigated forward and backward.

          Circular Linked List − Last item contains link of the first element as next and the first element has a link to the last element as previous.

          Basic Operations
          Following are the basic operations supported by a list.

          Insertion − Adds an element at the beginning of the list.

          Deletion − Deletes an element at the beginning of the list.

          Display − Displays the complete list.

          Search − Searches an element using the given key.

          Delete − Deletes an element using the given key.

          Insertion Operation
          Adding a new node in linked list is a more than one step activity. We shall learn this with diagrams here. First, create a node using the same structure and find the location where it has to be inserted.

          Linked List Insertion
          Imagine that we are inserting a node B (NewNode), between A (LeftNode) and C (RightNode). Then point B.next to C −

          NewNode.next −> RightNode;
          It should look like this −

          Linked List Insertion
          Now, the next node at the left should point to the new node.

          LeftNode.next −> NewNode;
          Linked List Insertion
          This will put the new node in the middle of the two. The new list should look like this −

          Linked List Insertion
          Similar steps should be taken if the node is being inserted at the beginning of the list. While inserting it at the end, the second last node of the list should point to the new node and the new node will point to NULL.

          Deletion Operation
          Deletion is also a more than one step process. We shall learn with pictorial representation. First, locate the target node to be removed, by using searching algorithms.

          Linked List Deletion
          The left (previous) node of the target node now should point to the next node of the target node −

          LeftNode.next −> TargetNode.next;
          Linked List Deletion
          This will remove the link that was pointing to the target node. Now, using the following code, we will remove what the target node is pointing at.

          TargetNode.next −> NULL;
          Linked List Deletion
          We need to use the deleted node. We can keep that in memory otherwise we can simply deallocate memory and wipe off the target node completely.

          Linked List Deletion
          Reverse Operation
          This operation is a thorough one. We need to make the last node to be pointed by the head node and reverse the whole linked list.

          Linked List Reverse Operation
          First, we traverse to the end of the list. It should be pointing to NULL. Now, we shall make it point to its previous node −

          Linked List Reverse Operation
          We have to make sure that the last node is not the last node. So we'll have some temp node, which looks like the head node pointing to the last node. Now, we shall make all left side nodes point to their previous nodes one by one.

          Linked List Reverse Operation
          Except the node (first node) pointed by the head node, all nodes should point to their predecessor, making them their new successor. The first node will point to NULL.

          Linked List Reverse Operation
          We'll make the head node point to the new first node by using the temp node.

          Doubly Linked List is a variation of Linked list in which navigation is possible in both ways, either forward and backward easily as compared to Single Linked List. Following are the important terms to understand the concept of doubly linked list.

          Link − Each link of a linked list can store a data called an element.

          Next − Each link of a linked list contains a link to the next link called Next.

          Prev − Each link of a linked list contains a link to the previous link called Prev.

          LinkedList − A Linked List contains the connection link to the first link called First and to the last link called Last.

          Doubly Linked List Representation
          Doubly Linked List
          As per the above illustration, following are the important points to be considered.

          Doubly Linked List contains a link element called first and last.

          Each link carries a data field(s) and two link fields called next and prev.

          Each link is linked with its next link using its next link.

          Each link is linked with its previous link using its previous link.

          The last link carries a link as null to mark the end of the list.

          Basic Operations
          Following are the basic operations supported by a list.

          Insertion − Adds an element at the beginning of the list.

          Deletion − Deletes an element at the beginning of the list.

          Insert Last − Adds an element at the end of the list.

          Delete Last − Deletes an element from the end of the list.

          Insert After − Adds an element after an item of the list.

          Delete − Deletes an element from the list using the key.

          Display forward − Displays the complete list in a forward manner.

          Display backward − Displays the complete list in a backward manner.

          Insertion Operation
          Following code demonstrates the insertion operation at the beginning of a doubly linked list.

          Example
          //insert link at the first location
          void insertFirst(int key, int data) {

          //create a link
          struct node link = (struct node) malloc(sizeof(struct node));
          link->key = key;
          link->data = data;

          if(isEmpty()) {
          //make it the last link
          last = link;
          } else {
          //update first prev link
          head->prev = link;
          }

          //point it to old first link
          link->next = head;

          //point first to new first link
          head = link;
          }
          Deletion Operation
          Following code demonstrates the deletion operation at the beginning of a doubly linked list.

          Example
          //delete first item
          struct node* deleteFirst() {

          //save reference to first link
          struct node *tempLink = head;

          //if only one link
          if(head->next == NULL) {
          last = NULL;
          } else {
          head->next->prev = NULL;
          }

          head = head->next;

          //return the deleted link
          return tempLink;
          }
          Insertion at the End of an Operation
          Following code demonstrates the insertion operation at the last position of a doubly linked list.

          Example
          //insert link at the last location
          void insertLast(int key, int data) {

          //create a link
          struct node link = (struct node) malloc(sizeof(struct node));
          link->key = key;
          link->data = data;

          if(isEmpty()) {
          //make it the last link
          last = link;
          } else {
          //make link a new last link
          last->next = link;

           //mark old last node as prev of new link
          link->prev = last;
          

          }

          //point last to new last node
          last = link;
          }

          Originally posted by @Manish4Kumar in #18 (comment)

          Metadata

          Metadata

          Assignees

          No one assigned

            Labels

            No labels
            No labels

            Projects

            No projects

              Milestone

              No milestone

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
              Skip to content

              A linked list is a sequence of data structures, which are connected together via links. #19

              Description

              @Manish4Kumar

              A linked list is a sequence of data structures, which are connected together via links.

              Linked List is a sequence of links which contains items. Each link contains a connection to another link. Linked list is the second most-used data structure after array. Following are the important terms to understand the concept of Linked List.

              Link − Each link of a linked list can store a data called an element.

              Next − Each link of a linked list contains a link to the next link called Next.

              Linkedlist − A Linked List contains the connection link to the first link called First.

              Linked List Representation
              Linked list can be visualized as a chain of nodes, where every node points to the next node.

              Linked List
              As per the above illustration, following are the important points to be considered.

              Linked List contains a link element called first.

              Each link carries a data field(s) and a link field called next.

              Each link is linked with its next link using its next link.

              Last link carries a link as null to mark the end of the list.

              Types of Linked List
              Following are the various types of linked list.

              Simple Linked List − Item navigation is forward only.

              Doubly Linked List − Items can be navigated forward and backward.

              Circular Linked List − Last item contains link of the first element as next and the first element has a link to the last element as previous.

              Basic Operations
              Following are the basic operations supported by a list.

              Insertion − Adds an element at the beginning of the list.

              Deletion − Deletes an element at the beginning of the list.

              Display − Displays the complete list.

              Search − Searches an element using the given key.

              Delete − Deletes an element using the given key.

              Insertion Operation
              Adding a new node in linked list is a more than one step activity. We shall learn this with diagrams here. First, create a node using the same structure and find the location where it has to be inserted.

              Linked List Insertion
              Imagine that we are inserting a node B (NewNode), between A (LeftNode) and C (RightNode). Then point B.next to C −

              NewNode.next −> RightNode;
              It should look like this −

              Linked List Insertion
              Now, the next node at the left should point to the new node.

              LeftNode.next −> NewNode;
              Linked List Insertion
              This will put the new node in the middle of the two. The new list should look like this −

              Linked List Insertion
              Similar steps should be taken if the node is being inserted at the beginning of the list. While inserting it at the end, the second last node of the list should point to the new node and the new node will point to NULL.

              Deletion Operation
              Deletion is also a more than one step process. We shall learn with pictorial representation. First, locate the target node to be removed, by using searching algorithms.

              Linked List Deletion
              The left (previous) node of the target node now should point to the next node of the target node −

              LeftNode.next −> TargetNode.next;
              Linked List Deletion
              This will remove the link that was pointing to the target node. Now, using the following code, we will remove what the target node is pointing at.

              TargetNode.next −> NULL;
              Linked List Deletion
              We need to use the deleted node. We can keep that in memory otherwise we can simply deallocate memory and wipe off the target node completely.

              Linked List Deletion
              Reverse Operation
              This operation is a thorough one. We need to make the last node to be pointed by the head node and reverse the whole linked list.

              Linked List Reverse Operation
              First, we traverse to the end of the list. It should be pointing to NULL. Now, we shall make it point to its previous node −

              Linked List Reverse Operation
              We have to make sure that the last node is not the last node. So we'll have some temp node, which looks like the head node pointing to the last node. Now, we shall make all left side nodes point to their previous nodes one by one.

              Linked List Reverse Operation
              Except the node (first node) pointed by the head node, all nodes should point to their predecessor, making them their new successor. The first node will point to NULL.

              Linked List Reverse Operation
              We'll make the head node point to the new first node by using the temp node.

              Doubly Linked List is a variation of Linked list in which navigation is possible in both ways, either forward and backward easily as compared to Single Linked List. Following are the important terms to understand the concept of doubly linked list.

              Link − Each link of a linked list can store a data called an element.

              Next − Each link of a linked list contains a link to the next link called Next.

              Prev − Each link of a linked list contains a link to the previous link called Prev.

              LinkedList − A Linked List contains the connection link to the first link called First and to the last link called Last.

              Doubly Linked List Representation
              Doubly Linked List
              As per the above illustration, following are the important points to be considered.

              Doubly Linked List contains a link element called first and last.

              Each link carries a data field(s) and two link fields called next and prev.

              Each link is linked with its next link using its next link.

              Each link is linked with its previous link using its previous link.

              The last link carries a link as null to mark the end of the list.

              Basic Operations
              Following are the basic operations supported by a list.

              Insertion − Adds an element at the beginning of the list.

              Deletion − Deletes an element at the beginning of the list.

              Insert Last − Adds an element at the end of the list.

              Delete Last − Deletes an element from the end of the list.

              Insert After − Adds an element after an item of the list.

              Delete − Deletes an element from the list using the key.

              Display forward − Displays the complete list in a forward manner.

              Display backward − Displays the complete list in a backward manner.

              Insertion Operation
              Following code demonstrates the insertion operation at the beginning of a doubly linked list.

              Example
              //insert link at the first location
              void insertFirst(int key, int data) {

              //create a link
              struct node link = (struct node) malloc(sizeof(struct node));
              link->key = key;
              link->data = data;

              if(isEmpty()) {
              //make it the last link
              last = link;
              } else {
              //update first prev link
              head->prev = link;
              }

              //point it to old first link
              link->next = head;

              //point first to new first link
              head = link;
              }
              Deletion Operation
              Following code demonstrates the deletion operation at the beginning of a doubly linked list.

              Example
              //delete first item
              struct node* deleteFirst() {

              //save reference to first link
              struct node *tempLink = head;

              //if only one link
              if(head->next == NULL) {
              last = NULL;
              } else {
              head->next->prev = NULL;
              }

              head = head->next;

              //return the deleted link
              return tempLink;
              }
              Insertion at the End of an Operation
              Following code demonstrates the insertion operation at the last position of a doubly linked list.

              Example
              //insert link at the last location
              void insertLast(int key, int data) {

              //create a link
              struct node link = (struct node) malloc(sizeof(struct node));
              link->key = key;
              link->data = data;

              if(isEmpty()) {
              //make it the last link
              last = link;
              } else {
              //make link a new last link
              last->next = link;

               //mark old last node as prev of new link
              link->prev = last;
              

              }

              //point last to new last node
              last = link;
              }

              Originally posted by @Manish4Kumar in #18 (comment)

              Metadata

              Metadata

              Assignees

              No one assigned

                Labels

                No labels
                No labels

                Projects

                No projects

                  Milestone

                  No milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions

                  , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
                  Skip to content

                  A linked list is a sequence of data structures, which are connected together via links. #19

                  Description

                  @Manish4Kumar

                  A linked list is a sequence of data structures, which are connected together via links.

                  Linked List is a sequence of links which contains items. Each link contains a connection to another link. Linked list is the second most-used data structure after array. Following are the important terms to understand the concept of Linked List.

                  Link − Each link of a linked list can store a data called an element.

                  Next − Each link of a linked list contains a link to the next link called Next.

                  Linkedlist − A Linked List contains the connection link to the first link called First.

                  Linked List Representation
                  Linked list can be visualized as a chain of nodes, where every node points to the next node.

                  Linked List
                  As per the above illustration, following are the important points to be considered.

                  Linked List contains a link element called first.

                  Each link carries a data field(s) and a link field called next.

                  Each link is linked with its next link using its next link.

                  Last link carries a link as null to mark the end of the list.

                  Types of Linked List
                  Following are the various types of linked list.

                  Simple Linked List − Item navigation is forward only.

                  Doubly Linked List − Items can be navigated forward and backward.

                  Circular Linked List − Last item contains link of the first element as next and the first element has a link to the last element as previous.

                  Basic Operations
                  Following are the basic operations supported by a list.

                  Insertion − Adds an element at the beginning of the list.

                  Deletion − Deletes an element at the beginning of the list.

                  Display − Displays the complete list.

                  Search − Searches an element using the given key.

                  Delete − Deletes an element using the given key.

                  Insertion Operation
                  Adding a new node in linked list is a more than one step activity. We shall learn this with diagrams here. First, create a node using the same structure and find the location where it has to be inserted.

                  Linked List Insertion
                  Imagine that we are inserting a node B (NewNode), between A (LeftNode) and C (RightNode). Then point B.next to C −

                  NewNode.next −> RightNode;
                  It should look like this −

                  Linked List Insertion
                  Now, the next node at the left should point to the new node.

                  LeftNode.next −> NewNode;
                  Linked List Insertion
                  This will put the new node in the middle of the two. The new list should look like this −

                  Linked List Insertion
                  Similar steps should be taken if the node is being inserted at the beginning of the list. While inserting it at the end, the second last node of the list should point to the new node and the new node will point to NULL.

                  Deletion Operation
                  Deletion is also a more than one step process. We shall learn with pictorial representation. First, locate the target node to be removed, by using searching algorithms.

                  Linked List Deletion
                  The left (previous) node of the target node now should point to the next node of the target node −

                  LeftNode.next −> TargetNode.next;
                  Linked List Deletion
                  This will remove the link that was pointing to the target node. Now, using the following code, we will remove what the target node is pointing at.

                  TargetNode.next −> NULL;
                  Linked List Deletion
                  We need to use the deleted node. We can keep that in memory otherwise we can simply deallocate memory and wipe off the target node completely.

                  Linked List Deletion
                  Reverse Operation
                  This operation is a thorough one. We need to make the last node to be pointed by the head node and reverse the whole linked list.

                  Linked List Reverse Operation
                  First, we traverse to the end of the list. It should be pointing to NULL. Now, we shall make it point to its previous node −

                  Linked List Reverse Operation
                  We have to make sure that the last node is not the last node. So we'll have some temp node, which looks like the head node pointing to the last node. Now, we shall make all left side nodes point to their previous nodes one by one.

                  Linked List Reverse Operation
                  Except the node (first node) pointed by the head node, all nodes should point to their predecessor, making them their new successor. The first node will point to NULL.

                  Linked List Reverse Operation
                  We'll make the head node point to the new first node by using the temp node.

                  Doubly Linked List is a variation of Linked list in which navigation is possible in both ways, either forward and backward easily as compared to Single Linked List. Following are the important terms to understand the concept of doubly linked list.

                  Link − Each link of a linked list can store a data called an element.

                  Next − Each link of a linked list contains a link to the next link called Next.

                  Prev − Each link of a linked list contains a link to the previous link called Prev.

                  LinkedList − A Linked List contains the connection link to the first link called First and to the last link called Last.

                  Doubly Linked List Representation
                  Doubly Linked List
                  As per the above illustration, following are the important points to be considered.

                  Doubly Linked List contains a link element called first and last.

                  Each link carries a data field(s) and two link fields called next and prev.

                  Each link is linked with its next link using its next link.

                  Each link is linked with its previous link using its previous link.

                  The last link carries a link as null to mark the end of the list.

                  Basic Operations
                  Following are the basic operations supported by a list.

                  Insertion − Adds an element at the beginning of the list.

                  Deletion − Deletes an element at the beginning of the list.

                  Insert Last − Adds an element at the end of the list.

                  Delete Last − Deletes an element from the end of the list.

                  Insert After − Adds an element after an item of the list.

                  Delete − Deletes an element from the list using the key.

                  Display forward − Displays the complete list in a forward manner.

                  Display backward − Displays the complete list in a backward manner.

                  Insertion Operation
                  Following code demonstrates the insertion operation at the beginning of a doubly linked list.

                  Example
                  //insert link at the first location
                  void insertFirst(int key, int data) {

                  //create a link
                  struct node link = (struct node) malloc(sizeof(struct node));
                  link->key = key;
                  link->data = data;

                  if(isEmpty()) {
                  //make it the last link
                  last = link;
                  } else {
                  //update first prev link
                  head->prev = link;
                  }

                  //point it to old first link
                  link->next = head;

                  //point first to new first link
                  head = link;
                  }
                  Deletion Operation
                  Following code demonstrates the deletion operation at the beginning of a doubly linked list.

                  Example
                  //delete first item
                  struct node* deleteFirst() {

                  //save reference to first link
                  struct node *tempLink = head;

                  //if only one link
                  if(head->next == NULL) {
                  last = NULL;
                  } else {
                  head->next->prev = NULL;
                  }

                  head = head->next;

                  //return the deleted link
                  return tempLink;
                  }
                  Insertion at the End of an Operation
                  Following code demonstrates the insertion operation at the last position of a doubly linked list.

                  Example
                  //insert link at the last location
                  void insertLast(int key, int data) {

                  //create a link
                  struct node link = (struct node) malloc(sizeof(struct node));
                  link->key = key;
                  link->data = data;

                  if(isEmpty()) {
                  //make it the last link
                  last = link;
                  } else {
                  //make link a new last link
                  last->next = link;

                   //mark old last node as prev of new link
                  link->prev = last;
                  

                  }

                  //point last to new last node
                  last = link;
                  }

                  Originally posted by @Manish4Kumar in #18 (comment)

                  Metadata

                  Metadata

                  Assignees

                  No one assigned

                    Labels

                    No labels
                    No labels

                    Projects

                    No projects

                      Milestone

                      No milestone

                      Relationships

                      None yet

                      Development

                      No branches or pull requests

                      Issue actions

                      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
                      Skip to content

                      A linked list is a sequence of data structures, which are connected together via links. #19

                      Description

                      @Manish4Kumar

                      A linked list is a sequence of data structures, which are connected together via links.

                      Linked List is a sequence of links which contains items. Each link contains a connection to another link. Linked list is the second most-used data structure after array. Following are the important terms to understand the concept of Linked List.

                      Link − Each link of a linked list can store a data called an element.

                      Next − Each link of a linked list contains a link to the next link called Next.

                      Linkedlist − A Linked List contains the connection link to the first link called First.

                      Linked List Representation
                      Linked list can be visualized as a chain of nodes, where every node points to the next node.

                      Linked List
                      As per the above illustration, following are the important points to be considered.

                      Linked List contains a link element called first.

                      Each link carries a data field(s) and a link field called next.

                      Each link is linked with its next link using its next link.

                      Last link carries a link as null to mark the end of the list.

                      Types of Linked List
                      Following are the various types of linked list.

                      Simple Linked List − Item navigation is forward only.

                      Doubly Linked List − Items can be navigated forward and backward.

                      Circular Linked List − Last item contains link of the first element as next and the first element has a link to the last element as previous.

                      Basic Operations
                      Following are the basic operations supported by a list.

                      Insertion − Adds an element at the beginning of the list.

                      Deletion − Deletes an element at the beginning of the list.

                      Display − Displays the complete list.

                      Search − Searches an element using the given key.

                      Delete − Deletes an element using the given key.

                      Insertion Operation
                      Adding a new node in linked list is a more than one step activity. We shall learn this with diagrams here. First, create a node using the same structure and find the location where it has to be inserted.

                      Linked List Insertion
                      Imagine that we are inserting a node B (NewNode), between A (LeftNode) and C (RightNode). Then point B.next to C −

                      NewNode.next −> RightNode;
                      It should look like this −

                      Linked List Insertion
                      Now, the next node at the left should point to the new node.

                      LeftNode.next −> NewNode;
                      Linked List Insertion
                      This will put the new node in the middle of the two. The new list should look like this −

                      Linked List Insertion
                      Similar steps should be taken if the node is being inserted at the beginning of the list. While inserting it at the end, the second last node of the list should point to the new node and the new node will point to NULL.

                      Deletion Operation
                      Deletion is also a more than one step process. We shall learn with pictorial representation. First, locate the target node to be removed, by using searching algorithms.

                      Linked List Deletion
                      The left (previous) node of the target node now should point to the next node of the target node −

                      LeftNode.next −> TargetNode.next;
                      Linked List Deletion
                      This will remove the link that was pointing to the target node. Now, using the following code, we will remove what the target node is pointing at.

                      TargetNode.next −> NULL;
                      Linked List Deletion
                      We need to use the deleted node. We can keep that in memory otherwise we can simply deallocate memory and wipe off the target node completely.

                      Linked List Deletion
                      Reverse Operation
                      This operation is a thorough one. We need to make the last node to be pointed by the head node and reverse the whole linked list.

                      Linked List Reverse Operation
                      First, we traverse to the end of the list. It should be pointing to NULL. Now, we shall make it point to its previous node −

                      Linked List Reverse Operation
                      We have to make sure that the last node is not the last node. So we'll have some temp node, which looks like the head node pointing to the last node. Now, we shall make all left side nodes point to their previous nodes one by one.

                      Linked List Reverse Operation
                      Except the node (first node) pointed by the head node, all nodes should point to their predecessor, making them their new successor. The first node will point to NULL.

                      Linked List Reverse Operation
                      We'll make the head node point to the new first node by using the temp node.

                      Doubly Linked List is a variation of Linked list in which navigation is possible in both ways, either forward and backward easily as compared to Single Linked List. Following are the important terms to understand the concept of doubly linked list.

                      Link − Each link of a linked list can store a data called an element.

                      Next − Each link of a linked list contains a link to the next link called Next.

                      Prev − Each link of a linked list contains a link to the previous link called Prev.

                      LinkedList − A Linked List contains the connection link to the first link called First and to the last link called Last.

                      Doubly Linked List Representation
                      Doubly Linked List
                      As per the above illustration, following are the important points to be considered.

                      Doubly Linked List contains a link element called first and last.

                      Each link carries a data field(s) and two link fields called next and prev.

                      Each link is linked with its next link using its next link.

                      Each link is linked with its previous link using its previous link.

                      The last link carries a link as null to mark the end of the list.

                      Basic Operations
                      Following are the basic operations supported by a list.

                      Insertion − Adds an element at the beginning of the list.

                      Deletion − Deletes an element at the beginning of the list.

                      Insert Last − Adds an element at the end of the list.

                      Delete Last − Deletes an element from the end of the list.

                      Insert After − Adds an element after an item of the list.

                      Delete − Deletes an element from the list using the key.

                      Display forward − Displays the complete list in a forward manner.

                      Display backward − Displays the complete list in a backward manner.

                      Insertion Operation
                      Following code demonstrates the insertion operation at the beginning of a doubly linked list.

                      Example
                      //insert link at the first location
                      void insertFirst(int key, int data) {

                      //create a link
                      struct node link = (struct node) malloc(sizeof(struct node));
                      link->key = key;
                      link->data = data;

                      if(isEmpty()) {
                      //make it the last link
                      last = link;
                      } else {
                      //update first prev link
                      head->prev = link;
                      }

                      //point it to old first link
                      link->next = head;

                      //point first to new first link
                      head = link;
                      }
                      Deletion Operation
                      Following code demonstrates the deletion operation at the beginning of a doubly linked list.

                      Example
                      //delete first item
                      struct node* deleteFirst() {

                      //save reference to first link
                      struct node *tempLink = head;

                      //if only one link
                      if(head->next == NULL) {
                      last = NULL;
                      } else {
                      head->next->prev = NULL;
                      }

                      head = head->next;

                      //return the deleted link
                      return tempLink;
                      }
                      Insertion at the End of an Operation
                      Following code demonstrates the insertion operation at the last position of a doubly linked list.

                      Example
                      //insert link at the last location
                      void insertLast(int key, int data) {

                      //create a link
                      struct node link = (struct node) malloc(sizeof(struct node));
                      link->key = key;
                      link->data = data;

                      if(isEmpty()) {
                      //make it the last link
                      last = link;
                      } else {
                      //make link a new last link
                      last->next = link;

                       //mark old last node as prev of new link
                      link->prev = last;
                      

                      }

                      //point last to new last node
                      last = link;
                      }

                      Originally posted by @Manish4Kumar in #18 (comment)

                      Metadata

                      Metadata

                      Assignees

                      No one assigned

                        Labels

                        No labels
                        No labels

                        Projects

                        No projects

                          Milestone

                          No milestone

                          Relationships

                          None yet

                          Development

                          No branches or pull requests

                          Issue actions

                          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
                          Skip to content

                          A linked list is a sequence of data structures, which are connected together via links. #19

                          Description

                          @Manish4Kumar

                          A linked list is a sequence of data structures, which are connected together via links.

                          Linked List is a sequence of links which contains items. Each link contains a connection to another link. Linked list is the second most-used data structure after array. Following are the important terms to understand the concept of Linked List.

                          Link − Each link of a linked list can store a data called an element.

                          Next − Each link of a linked list contains a link to the next link called Next.

                          Linkedlist − A Linked List contains the connection link to the first link called First.

                          Linked List Representation
                          Linked list can be visualized as a chain of nodes, where every node points to the next node.

                          Linked List
                          As per the above illustration, following are the important points to be considered.

                          Linked List contains a link element called first.

                          Each link carries a data field(s) and a link field called next.

                          Each link is linked with its next link using its next link.

                          Last link carries a link as null to mark the end of the list.

                          Types of Linked List
                          Following are the various types of linked list.

                          Simple Linked List − Item navigation is forward only.

                          Doubly Linked List − Items can be navigated forward and backward.

                          Circular Linked List − Last item contains link of the first element as next and the first element has a link to the last element as previous.

                          Basic Operations
                          Following are the basic operations supported by a list.

                          Insertion − Adds an element at the beginning of the list.

                          Deletion − Deletes an element at the beginning of the list.

                          Display − Displays the complete list.

                          Search − Searches an element using the given key.

                          Delete − Deletes an element using the given key.

                          Insertion Operation
                          Adding a new node in linked list is a more than one step activity. We shall learn this with diagrams here. First, create a node using the same structure and find the location where it has to be inserted.

                          Linked List Insertion
                          Imagine that we are inserting a node B (NewNode), between A (LeftNode) and C (RightNode). Then point B.next to C −

                          NewNode.next −> RightNode;
                          It should look like this −

                          Linked List Insertion
                          Now, the next node at the left should point to the new node.

                          LeftNode.next −> NewNode;
                          Linked List Insertion
                          This will put the new node in the middle of the two. The new list should look like this −

                          Linked List Insertion
                          Similar steps should be taken if the node is being inserted at the beginning of the list. While inserting it at the end, the second last node of the list should point to the new node and the new node will point to NULL.

                          Deletion Operation
                          Deletion is also a more than one step process. We shall learn with pictorial representation. First, locate the target node to be removed, by using searching algorithms.

                          Linked List Deletion
                          The left (previous) node of the target node now should point to the next node of the target node −

                          LeftNode.next −> TargetNode.next;
                          Linked List Deletion
                          This will remove the link that was pointing to the target node. Now, using the following code, we will remove what the target node is pointing at.

                          TargetNode.next −> NULL;
                          Linked List Deletion
                          We need to use the deleted node. We can keep that in memory otherwise we can simply deallocate memory and wipe off the target node completely.

                          Linked List Deletion
                          Reverse Operation
                          This operation is a thorough one. We need to make the last node to be pointed by the head node and reverse the whole linked list.

                          Linked List Reverse Operation
                          First, we traverse to the end of the list. It should be pointing to NULL. Now, we shall make it point to its previous node −

                          Linked List Reverse Operation
                          We have to make sure that the last node is not the last node. So we'll have some temp node, which looks like the head node pointing to the last node. Now, we shall make all left side nodes point to their previous nodes one by one.

                          Linked List Reverse Operation
                          Except the node (first node) pointed by the head node, all nodes should point to their predecessor, making them their new successor. The first node will point to NULL.

                          Linked List Reverse Operation
                          We'll make the head node point to the new first node by using the temp node.

                          Doubly Linked List is a variation of Linked list in which navigation is possible in both ways, either forward and backward easily as compared to Single Linked List. Following are the important terms to understand the concept of doubly linked list.

                          Link − Each link of a linked list can store a data called an element.

                          Next − Each link of a linked list contains a link to the next link called Next.

                          Prev − Each link of a linked list contains a link to the previous link called Prev.

                          LinkedList − A Linked List contains the connection link to the first link called First and to the last link called Last.

                          Doubly Linked List Representation
                          Doubly Linked List
                          As per the above illustration, following are the important points to be considered.

                          Doubly Linked List contains a link element called first and last.

                          Each link carries a data field(s) and two link fields called next and prev.

                          Each link is linked with its next link using its next link.

                          Each link is linked with its previous link using its previous link.

                          The last link carries a link as null to mark the end of the list.

                          Basic Operations
                          Following are the basic operations supported by a list.

                          Insertion − Adds an element at the beginning of the list.

                          Deletion − Deletes an element at the beginning of the list.

                          Insert Last − Adds an element at the end of the list.

                          Delete Last − Deletes an element from the end of the list.

                          Insert After − Adds an element after an item of the list.

                          Delete − Deletes an element from the list using the key.

                          Display forward − Displays the complete list in a forward manner.

                          Display backward − Displays the complete list in a backward manner.

                          Insertion Operation
                          Following code demonstrates the insertion operation at the beginning of a doubly linked list.

                          Example
                          //insert link at the first location
                          void insertFirst(int key, int data) {

                          //create a link
                          struct node link = (struct node) malloc(sizeof(struct node));
                          link->key = key;
                          link->data = data;

                          if(isEmpty()) {
                          //make it the last link
                          last = link;
                          } else {
                          //update first prev link
                          head->prev = link;
                          }

                          //point it to old first link
                          link->next = head;

                          //point first to new first link
                          head = link;
                          }
                          Deletion Operation
                          Following code demonstrates the deletion operation at the beginning of a doubly linked list.

                          Example
                          //delete first item
                          struct node* deleteFirst() {

                          //save reference to first link
                          struct node *tempLink = head;

                          //if only one link
                          if(head->next == NULL) {
                          last = NULL;
                          } else {
                          head->next->prev = NULL;
                          }

                          head = head->next;

                          //return the deleted link
                          return tempLink;
                          }
                          Insertion at the End of an Operation
                          Following code demonstrates the insertion operation at the last position of a doubly linked list.

                          Example
                          //insert link at the last location
                          void insertLast(int key, int data) {

                          //create a link
                          struct node link = (struct node) malloc(sizeof(struct node));
                          link->key = key;
                          link->data = data;

                          if(isEmpty()) {
                          //make it the last link
                          last = link;
                          } else {
                          //make link a new last link
                          last->next = link;

                           //mark old last node as prev of new link
                          link->prev = last;
                          

                          }

                          //point last to new last node
                          last = link;
                          }

                          Originally posted by @Manish4Kumar in #18 (comment)

                          Metadata

                          Metadata

                          Assignees

                          No one assigned

                            Labels

                            No labels
                            No labels

                            Projects

                            No projects

                              Milestone

                              No milestone

                              Relationships

                              None yet

                              Development

                              No branches or pull requests

                              Issue actions

                              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
                              Skip to content

                              A linked list is a sequence of data structures, which are connected together via links. #19

                              Description

                              @Manish4Kumar

                              A linked list is a sequence of data structures, which are connected together via links.

                              Linked List is a sequence of links which contains items. Each link contains a connection to another link. Linked list is the second most-used data structure after array. Following are the important terms to understand the concept of Linked List.

                              Link − Each link of a linked list can store a data called an element.

                              Next − Each link of a linked list contains a link to the next link called Next.

                              Linkedlist − A Linked List contains the connection link to the first link called First.

                              Linked List Representation
                              Linked list can be visualized as a chain of nodes, where every node points to the next node.

                              Linked List
                              As per the above illustration, following are the important points to be considered.

                              Linked List contains a link element called first.

                              Each link carries a data field(s) and a link field called next.

                              Each link is linked with its next link using its next link.

                              Last link carries a link as null to mark the end of the list.

                              Types of Linked List
                              Following are the various types of linked list.

                              Simple Linked List − Item navigation is forward only.

                              Doubly Linked List − Items can be navigated forward and backward.

                              Circular Linked List − Last item contains link of the first element as next and the first element has a link to the last element as previous.

                              Basic Operations
                              Following are the basic operations supported by a list.

                              Insertion − Adds an element at the beginning of the list.

                              Deletion − Deletes an element at the beginning of the list.

                              Display − Displays the complete list.

                              Search − Searches an element using the given key.

                              Delete − Deletes an element using the given key.

                              Insertion Operation
                              Adding a new node in linked list is a more than one step activity. We shall learn this with diagrams here. First, create a node using the same structure and find the location where it has to be inserted.

                              Linked List Insertion
                              Imagine that we are inserting a node B (NewNode), between A (LeftNode) and C (RightNode). Then point B.next to C −

                              NewNode.next −> RightNode;
                              It should look like this −

                              Linked List Insertion
                              Now, the next node at the left should point to the new node.

                              LeftNode.next −> NewNode;
                              Linked List Insertion
                              This will put the new node in the middle of the two. The new list should look like this −

                              Linked List Insertion
                              Similar steps should be taken if the node is being inserted at the beginning of the list. While inserting it at the end, the second last node of the list should point to the new node and the new node will point to NULL.

                              Deletion Operation
                              Deletion is also a more than one step process. We shall learn with pictorial representation. First, locate the target node to be removed, by using searching algorithms.

                              Linked List Deletion
                              The left (previous) node of the target node now should point to the next node of the target node −

                              LeftNode.next −> TargetNode.next;
                              Linked List Deletion
                              This will remove the link that was pointing to the target node. Now, using the following code, we will remove what the target node is pointing at.

                              TargetNode.next −> NULL;
                              Linked List Deletion
                              We need to use the deleted node. We can keep that in memory otherwise we can simply deallocate memory and wipe off the target node completely.

                              Linked List Deletion
                              Reverse Operation
                              This operation is a thorough one. We need to make the last node to be pointed by the head node and reverse the whole linked list.

                              Linked List Reverse Operation
                              First, we traverse to the end of the list. It should be pointing to NULL. Now, we shall make it point to its previous node −

                              Linked List Reverse Operation
                              We have to make sure that the last node is not the last node. So we'll have some temp node, which looks like the head node pointing to the last node. Now, we shall make all left side nodes point to their previous nodes one by one.

                              Linked List Reverse Operation
                              Except the node (first node) pointed by the head node, all nodes should point to their predecessor, making them their new successor. The first node will point to NULL.

                              Linked List Reverse Operation
                              We'll make the head node point to the new first node by using the temp node.

                              Doubly Linked List is a variation of Linked list in which navigation is possible in both ways, either forward and backward easily as compared to Single Linked List. Following are the important terms to understand the concept of doubly linked list.

                              Link − Each link of a linked list can store a data called an element.

                              Next − Each link of a linked list contains a link to the next link called Next.

                              Prev − Each link of a linked list contains a link to the previous link called Prev.

                              LinkedList − A Linked List contains the connection link to the first link called First and to the last link called Last.

                              Doubly Linked List Representation
                              Doubly Linked List
                              As per the above illustration, following are the important points to be considered.

                              Doubly Linked List contains a link element called first and last.

                              Each link carries a data field(s) and two link fields called next and prev.

                              Each link is linked with its next link using its next link.

                              Each link is linked with its previous link using its previous link.

                              The last link carries a link as null to mark the end of the list.

                              Basic Operations
                              Following are the basic operations supported by a list.

                              Insertion − Adds an element at the beginning of the list.

                              Deletion − Deletes an element at the beginning of the list.

                              Insert Last − Adds an element at the end of the list.

                              Delete Last − Deletes an element from the end of the list.

                              Insert After − Adds an element after an item of the list.

                              Delete − Deletes an element from the list using the key.

                              Display forward − Displays the complete list in a forward manner.

                              Display backward − Displays the complete list in a backward manner.

                              Insertion Operation
                              Following code demonstrates the insertion operation at the beginning of a doubly linked list.

                              Example
                              //insert link at the first location
                              void insertFirst(int key, int data) {

                              //create a link
                              struct node link = (struct node) malloc(sizeof(struct node));
                              link->key = key;
                              link->data = data;

                              if(isEmpty()) {
                              //make it the last link
                              last = link;
                              } else {
                              //update first prev link
                              head->prev = link;
                              }

                              //point it to old first link
                              link->next = head;

                              //point first to new first link
                              head = link;
                              }
                              Deletion Operation
                              Following code demonstrates the deletion operation at the beginning of a doubly linked list.

                              Example
                              //delete first item
                              struct node* deleteFirst() {

                              //save reference to first link
                              struct node *tempLink = head;

                              //if only one link
                              if(head->next == NULL) {
                              last = NULL;
                              } else {
                              head->next->prev = NULL;
                              }

                              head = head->next;

                              //return the deleted link
                              return tempLink;
                              }
                              Insertion at the End of an Operation
                              Following code demonstrates the insertion operation at the last position of a doubly linked list.

                              Example
                              //insert link at the last location
                              void insertLast(int key, int data) {

                              //create a link
                              struct node link = (struct node) malloc(sizeof(struct node));
                              link->key = key;
                              link->data = data;

                              if(isEmpty()) {
                              //make it the last link
                              last = link;
                              } else {
                              //make link a new last link
                              last->next = link;

                               //mark old last node as prev of new link
                              link->prev = last;
                              

                              }

                              //point last to new last node
                              last = link;
                              }

                              Originally posted by @Manish4Kumar in #18 (comment)

                              Metadata

                              Metadata

                              Assignees

                              No one assigned

                                Labels

                                No labels
                                No labels

                                Projects

                                No projects

                                  Milestone

                                  No milestone

                                  Relationships

                                  None yet

                                  Development

                                  No branches or pull requests

                                  Issue actions