{"id":33712,"date":"2023-02-12T19:46:58","date_gmt":"2023-02-12T14:16:58","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-remove-node-in-doubly-linked-class-in-c\/"},"modified":"2023-02-12T19:46:58","modified_gmt":"2023-02-12T14:16:58","slug":"solved-remove-node-in-doubly-linked-class-in-c","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-remove-node-in-doubly-linked-class-in-c\/","title":{"rendered":"[Solved] remove node in doubly linked class in C++"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-74755681\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"74755681\" data-parentid=\"74752406\" data-score=\"1\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>You should not execute <code>delete<\/code> on a node that is still in the linked list. First you need to rewire any references <strong>to<\/strong> it. That is to say, the node before should have its <code>nextPtr<\/code> redirected to the node after the one that is to be deleted, and that node should have its <code>beforePtr<\/code> redirected as well.<\/p>\n<p>Also, your code deletes the <em>next<\/em> node when it has found the matching value, and not that node itself. Moreover, there is no provision to delete more nodes in case the value occurs in more than one node.<\/p>\n<p>I would also suggest to split the algorithm into two, as the part to delete the <em>current<\/em> node is useful as a method on its own.<\/p>\n<p>So then we get this:<\/p>\n<pre><code>\/* New method for deleting the current node. After deletion the current pointer \n * will reference the next node if there is one, and otherwise the preceding \n * one, or if there is none there either, it will be set to null -- the list is\n * empty then.\n *\/\nvoid MyList::removeCurrent() {\n    if (currentPrt == nullptr) return; \/\/ Nothing to do\n    Node *temp = currentPrt;\n    \/\/ Rewire the previous and next node so they reference eachother\n    if (temp-&gt;getBeforePtr() != nullptr) {\n        temp-&gt;getBeforePtr()-&gt;setNextPtr(currentPrt-&gt;getNextPtr());\n    }\n    if (currentPrt-&gt;getNextPtr() != nullptr) {\n        currentPrt = currentPrt-&gt;getNextPtr();\n        currentPrt-&gt;setBeforePtr(temp-&gt;getBeforePtr());\n    } else {\n        currentPrt = temp-&gt;getBeforePtr();\n    }\n    \/\/ Now the temp node is isolated and no more part of the list:\n    \/\/ It is safe to delete it now.\n    delete temp;\n}\n\nvoid MyList::remove(int value) {\n    if (currentPrt == nullptr) return; \/\/ Nothing to do\n    \/\/ Go to the right as long as the current node's data is smaller\n    while (value &gt; currentPrt-&gt;getData() &amp;&amp; currentPrt-&gt;getNextPtr() != nullptr) {\n        currentPrt = currentPrt-&gt;getNextPtr();\n    }\n    \/\/ Go to the left as long as the previous node's data is not smaller\n    while (currentPrt-&gt;getBeforePtr() != nullptr &amp;&amp; value &lt;= currentPrt-&gt;getBeforePtr()-&gt;getData()) {\n        currentPrt = currentPrt-&gt;getBeforePtr();\n    }\n    \/\/ Arrived at left most node that could have the value we look for.\n    \/\/ Remove all occurrences\n    while (currentPrt != nullptr &amp;&amp; value == currentPrt-&gt;getData()) {\n        removeCurrent();\n    }\n}\n<\/code><\/pre>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">0<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved remove node in doubly linked class in C++ <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] You should not execute delete on a node that is still in the linked list. First you need to rewire any references to it. That is to say, the node before should have its nextPtr redirected to the node after the one that is to be deleted, and that node should have its beforePtr &#8230; <a title=\"[Solved] remove node in doubly linked class in C++\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-remove-node-in-doubly-linked-class-in-c\/\" aria-label=\"More on [Solved] remove node in doubly linked class in C++\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[324,1715,2397],"class_list":["post-33712","post","type-post","status-publish","format-standard","hentry","category-solved","tag-c","tag-doubly-linked-list","tag-nodes"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>[Solved] remove node in doubly linked class in C++ - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-remove-node-in-doubly-linked-class-in-c\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] remove node in doubly linked class in C++ - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] You should not execute delete on a node that is still in the linked list. First you need to rewire any references to it. That is to say, the node before should have its nextPtr redirected to the node after the one that is to be deleted, and that node should have its beforePtr ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-remove-node-in-doubly-linked-class-in-c\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2023-02-12T14:16:58+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-remove-node-in-doubly-linked-class-in-c\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-remove-node-in-doubly-linked-class-in-c\\\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/person\\\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] remove node in doubly linked class in C++\",\"datePublished\":\"2023-02-12T14:16:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-remove-node-in-doubly-linked-class-in-c\\\/\"},\"wordCount\":143,\"publisher\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#organization\"},\"keywords\":[\"c++\",\"doubly-linked-list\",\"nodes\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-remove-node-in-doubly-linked-class-in-c\\\/\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-remove-node-in-doubly-linked-class-in-c\\\/\",\"name\":\"[Solved] remove node in doubly linked class in C++ - JassWeb\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#website\"},\"datePublished\":\"2023-02-12T14:16:58+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-remove-node-in-doubly-linked-class-in-c\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-remove-node-in-doubly-linked-class-in-c\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-remove-node-in-doubly-linked-class-in-c\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] remove node in doubly linked class in C++\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#website\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/jassweb.com\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/jass-website-logo-1.png\",\"contentUrl\":\"https:\\\/\\\/jassweb.com\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/person\\\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/wp-content\\\/litespeed\\\/avatar\\\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/wp-content\\\/litespeed\\\/avatar\\\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"contentUrl\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/wp-content\\\/litespeed\\\/avatar\\\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\\\/\\\/jassweb.com\"],\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/author\\\/jaspritsinghghumangmail-com\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] remove node in doubly linked class in C++ - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-remove-node-in-doubly-linked-class-in-c\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] remove node in doubly linked class in C++ - JassWeb","og_description":"[ad_1] You should not execute delete on a node that is still in the linked list. First you need to rewire any references to it. That is to say, the node before should have its nextPtr redirected to the node after the one that is to be deleted, and that node should have its beforePtr ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-remove-node-in-doubly-linked-class-in-c\/","og_site_name":"JassWeb","article_published_time":"2023-02-12T14:16:58+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-remove-node-in-doubly-linked-class-in-c\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-remove-node-in-doubly-linked-class-in-c\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] remove node in doubly linked class in C++","datePublished":"2023-02-12T14:16:58+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-remove-node-in-doubly-linked-class-in-c\/"},"wordCount":143,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["c++","doubly-linked-list","nodes"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-remove-node-in-doubly-linked-class-in-c\/","url":"https:\/\/jassweb.com\/solved\/solved-remove-node-in-doubly-linked-class-in-c\/","name":"[Solved] remove node in doubly linked class in C++ - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2023-02-12T14:16:58+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-remove-node-in-doubly-linked-class-in-c\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-remove-node-in-doubly-linked-class-in-c\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-remove-node-in-doubly-linked-class-in-c\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] remove node in doubly linked class in C++"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/33712","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=33712"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/33712\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=33712"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=33712"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=33712"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}