

{"id":146825,"date":"2025-09-12T11:34:48","date_gmt":"2025-09-12T06:04:48","guid":{"rendered":"https:\/\/data-flair.training\/blogs\/?p=146825"},"modified":"2025-09-12T11:34:48","modified_gmt":"2025-09-12T06:04:48","slug":"circular-doubly-linked-list-in-dsa-python","status":"publish","type":"post","link":"https:\/\/data-flair.training\/blogs\/circular-doubly-linked-list-in-dsa-python\/","title":{"rendered":"Circular Doubly Linked List in DSA Python"},"content":{"rendered":"<h3>Program 1<\/h3>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\"># Implementation of circular double linked list\r\nimport os\r\n\r\nclass Node:\r\n    def __init__(self):\r\n        self.ladd=None\r\n        self.data=None\r\n        self.radd=None\r\n\r\nclass CircularDoubleList:\r\n    def __init__(self):\r\n        self.start=None\r\n        self.count=0\r\n\r\n    def create(self):\r\n        n=int(input(\"Enter first element: \"))\r\n        self.start=Node()\r\n        self.start.ladd=None\r\n        self.start.data=n\r\n        self.start.radd=None\r\n        temp=self.start\r\n        self.count=self.count+1\r\n        choice=input(\"Want to continue(y\/Y): \")\r\n        choice=choice.lower()\r\n        while(choice=='y'):\r\n            self.count=self.count+1\r\n            n=int(input(\"Enter next element: \"))\r\n            newnode=Node()\r\n            newnode.ladd=None\r\n            newnode.data=n\r\n            newnode.radd=None\r\n            temp.radd=newnode\r\n            newnode.ladd=temp\r\n            temp=temp.radd\r\n            self.start.ladd=newnode\r\n            newnode.radd=self.start\r\n            choice=input(\"Want to continue(y\/Y): \")\r\n            choice=choice.lower()\r\n\r\n    def display(self):\r\n        if(self.start==None):\r\n            print(\"List is empty\")\r\n        else:\r\n            temp=self.start\r\n            while(True):\r\n                print(temp.data,end=\"   \")            \r\n                temp=temp.radd\r\n                if(temp==self.start):\r\n                    break\r\n            print(\"\\n Total Node in list: \",self.count)    \r\n\r\n\r\n    def insertFirst(self):\r\n        if(self.start==None):\r\n            print(\"List is empty\")\r\n        else:\r\n             self.count=self.count+1\r\n             n=int(input(\"Enter next element: \"))\r\n             newnode=Node()\r\n             newnode.ladd=None\r\n             newnode.data=n\r\n             newnode.radd=None\r\n\r\n             last=self.start.ladd\r\n             self.start.ladd=newnode\r\n             newnode.radd=self.start\r\n             self.start=newnode\r\n             self.start.ladd=last\r\n             last.radd=self.start\r\n\r\n    def insertMiddle(self):\r\n        if(self.start==None):\r\n            print(\"List is empty\")\r\n        else:\r\n            self.count=self.count+1\r\n            n=int(input(\"Enter an element: \"))\r\n            newnode=Node()\r\n            newnode.ladd=None\r\n            newnode.data=n\r\n            newnode.radd=None\r\n            pos=int(input(\"Enter poistion of node: \"))\r\n            if(pos&gt;self.count):\r\n                print(\"Poistion is grater than total node: \")\r\n            else:\r\n                i=1\r\n                next=self.start\r\n                while(i&lt;pos):\r\n                    prev=next\r\n                    next=next.radd\r\n                    i=i+1\r\n                prev.radd=newnode\r\n                newnode.ladd=prev\r\n                newnode.radd=next\r\n                next.ladd=newnode                                            \r\n \r\n    def insertLast(self):\r\n         if(self.start==None):\r\n            print(\"List is empty\")\r\n         else:\r\n            self.count=self.count+1\r\n            n=int(input(\"Enter an element: \"))\r\n            newnode=Node()\r\n            newnode.ladd=None\r\n            newnode.data=n\r\n            newnode.radd=None\r\n            last=self.start.ladd\r\n            last.radd=newnode\r\n            newnode.ladd=last\r\n            self.start.ladd=newnode\r\n            newnode.radd=self.start\r\n\r\n      \r\n    def deleteFirst(self):\r\n        if(self.start==None):\r\n            print(\"List is empty\")\r\n        else:\r\n            temp=self.start\r\n            last=self.start.ladd\r\n            self.start=self.start.radd\r\n            \r\n            self.start.ladd=last\r\n            last.radd=self.start\r\n            print(\" Deleted node is \",temp.data)\r\n            del temp\r\n            temp=None\r\n            self.count=self.count-1\r\n\r\n    def deleteLast(self):\r\n         if(self.start==None):\r\n            print(\"List is empty\")\r\n         else:\r\n            last=self.start.ladd\r\n            prev=last.ladd\r\n            self.start.ladd=prev\r\n            prev.radd=self.start\r\n            print(\"Deleted node is : \",last.data)\r\n            del last\r\n            last=None\r\n            self.count=self.count-1\r\n    \r\n            \r\n    def deleteMiddle(self):\r\n        if(self.start==None):\r\n            print(\"List is empty\")\r\n        else:\r\n            \r\n            pos=int(input(\"Enter poistion of node for delete: \"))\r\n            if(pos&gt;self.count):\r\n                print(\"Poistion is grater than total node: \")\r\n            else:\r\n                self.count=self.count-1\r\n                i=1\r\n                next=self.start\r\n                while(i&lt;pos):\r\n                    prev=next\r\n                    next=next.radd\r\n                    i=i+1\r\n\r\n                temp=next\r\n                next=next.radd                    \r\n\r\n                next.ladd=prev\r\n                prev.radd=next\r\n                print(\"Deleted node is : \",temp.data)\r\n                del temp\r\n                temp=None            \r\n     \r\n    \r\n        \r\n\r\n# Main\r\nos.system('cls')\r\ncdll=CircularDoubleList()\r\nwhile(1):\r\n    print(\"\\n --------------------DoubleLinked List------------------------\")\r\n    print(\"1. Create\")\r\n    print(\"2. Display\")\r\n    print(\"3. Insert First\")\r\n    print(\"4. Insert Middle\")\r\n    print(\"5. Insert Last\")\r\n    print(\"6. Delete First \")\r\n    print(\"7. Delete Middle \")\r\n    print(\"8. Delete Last \")\r\n    print(\"9. Exit\")\r\n    print(\"---------------------------------------------------------\")\r\n    choice=int(input(\"Enter your choice: \"))     \r\n    if(choice==1):\r\n        cdll.create()\r\n    elif(choice==2):\r\n        cdll.display()\r\n    elif(choice==3):\r\n        cdll.insertFirst()    \r\n    elif(choice==4):\r\n        cdll.insertMiddle()\r\n    elif(choice==5):\r\n        cdll.insertLast()\r\n    elif(choice==6):\r\n        cdll.deleteFirst()\r\n    elif(choice==7):\r\n        cdll.deleteMiddle()    \r\n    elif(choice==8):\r\n        cdll.deleteLast()    \r\n    else:\r\n        break<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Program 1 # Implementation of circular double linked list import os class Node: def __init__(self): self.ladd=None self.data=None self.radd=None class CircularDoubleList: def __init__(self): self.start=None self.count=0 def create(self): n=int(input(&#8220;Enter first element: &#8220;)) self.start=Node() self.start.ladd=None self.start.data=n self.start.radd=None&#46;&#46;&#46;<\/p>\n","protected":false},"author":581,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[32847],"tags":[32278,32966,35263,32853,35262,32922,32923,32967,35261],"class_list":["post-146825","post","type-post","status-publish","format-standard","hentry","category-dsa-python-tutorials","tag-circular-doubly-linked-list","tag-circular-doubly-linked-list-in-dsa-python","tag-circular-doubly-linked-list-in-python","tag-dsa-python","tag-dsa-python-circular-doubly-linked-list","tag-dsa-python-practical","tag-dsa-python-program","tag-dsa-python-program-on-circular-doubly-linked-list","tag-dsa-python-tutorial"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Circular Doubly Linked List in DSA Python - DataFlair<\/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:\/\/data-flair.training\/blogs\/circular-doubly-linked-list-in-dsa-python\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Circular Doubly Linked List in DSA Python - DataFlair\" \/>\n<meta property=\"og:description\" content=\"Program 1 # Implementation of circular double linked list import os class Node: def __init__(self): self.ladd=None self.data=None self.radd=None class CircularDoubleList: def __init__(self): self.start=None self.count=0 def create(self): n=int(input(&quot;Enter first element: &quot;)) self.start=Node() self.start.ladd=None self.start.data=n self.start.radd=None&#046;&#046;&#046;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/data-flair.training\/blogs\/circular-doubly-linked-list-in-dsa-python\/\" \/>\n<meta property=\"og:site_name\" content=\"DataFlair\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DataFlairWS\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-09-12T06:04:48+00:00\" \/>\n<meta name=\"author\" content=\"DataFlair Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:site\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DataFlair Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Circular Doubly Linked List in DSA Python - DataFlair","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:\/\/data-flair.training\/blogs\/circular-doubly-linked-list-in-dsa-python\/","og_locale":"en_US","og_type":"article","og_title":"Circular Doubly Linked List in DSA Python - DataFlair","og_description":"Program 1 # Implementation of circular double linked list import os class Node: def __init__(self): self.ladd=None self.data=None self.radd=None class CircularDoubleList: def __init__(self): self.start=None self.count=0 def create(self): n=int(input(\"Enter first element: \")) self.start=Node() self.start.ladd=None self.start.data=n self.start.radd=None&#46;&#46;&#46;","og_url":"https:\/\/data-flair.training\/blogs\/circular-doubly-linked-list-in-dsa-python\/","og_site_name":"DataFlair","article_publisher":"https:\/\/www.facebook.com\/DataFlairWS\/","article_published_time":"2025-09-12T06:04:48+00:00","author":"DataFlair Team","twitter_card":"summary_large_image","twitter_creator":"@DataFlairWS","twitter_site":"@DataFlairWS","twitter_misc":{"Written by":"DataFlair Team","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/data-flair.training\/blogs\/circular-doubly-linked-list-in-dsa-python\/#article","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/circular-doubly-linked-list-in-dsa-python\/"},"author":{"name":"DataFlair Team","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/c187795dc82ab948373cca526df7c445"},"headline":"Circular Doubly Linked List in DSA Python","datePublished":"2025-09-12T06:04:48+00:00","mainEntityOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/circular-doubly-linked-list-in-dsa-python\/"},"wordCount":9,"commentCount":0,"publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"keywords":["circular doubly linked list","circular doubly linked list in dsa python","circular doubly linked list in python","dsa python","dsa python circular doubly linked list","dsa python practical","dsa python program","dsa python program on circular doubly linked list","dsa python tutorial"],"articleSection":["DSA using Python Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/data-flair.training\/blogs\/circular-doubly-linked-list-in-dsa-python\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/data-flair.training\/blogs\/circular-doubly-linked-list-in-dsa-python\/","url":"https:\/\/data-flair.training\/blogs\/circular-doubly-linked-list-in-dsa-python\/","name":"Circular Doubly Linked List in DSA Python - DataFlair","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/#website"},"datePublished":"2025-09-12T06:04:48+00:00","breadcrumb":{"@id":"https:\/\/data-flair.training\/blogs\/circular-doubly-linked-list-in-dsa-python\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/data-flair.training\/blogs\/circular-doubly-linked-list-in-dsa-python\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/data-flair.training\/blogs\/circular-doubly-linked-list-in-dsa-python\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog Home","item":"https:\/\/data-flair.training\/blogs\/"},{"@type":"ListItem","position":2,"name":"DSA using Python Tutorials","item":"https:\/\/data-flair.training\/blogs\/category\/dsa-python-tutorials\/"},{"@type":"ListItem","position":3,"name":"Circular Doubly Linked List in DSA Python"}]},{"@type":"WebSite","@id":"https:\/\/data-flair.training\/blogs\/#website","url":"https:\/\/data-flair.training\/blogs\/","name":"DataFlair","description":"Learn Today. Lead Tomorrow.","publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/data-flair.training\/blogs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/data-flair.training\/blogs\/#organization","name":"DataFlair","url":"https:\/\/data-flair.training\/blogs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","width":106,"height":48,"caption":"DataFlair"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DataFlairWS\/","https:\/\/x.com\/DataFlairWS","https:\/\/www.linkedin.com\/company\/dataflair-web-services-pvt-ltd\/","https:\/\/www.youtube.com\/user\/DataFlairWS"]},{"@type":"Person","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/c187795dc82ab948373cca526df7c445","name":"DataFlair Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/2302ebc438084d2f1f993edc1996a0aae01332e81f3227cba8df0c48ec010ca4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/2302ebc438084d2f1f993edc1996a0aae01332e81f3227cba8df0c48ec010ca4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2302ebc438084d2f1f993edc1996a0aae01332e81f3227cba8df0c48ec010ca4?s=96&d=mm&r=g","caption":"DataFlair Team"},"description":"DataFlair Team provides high-impact content on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. We make complex concepts easy to grasp, helping learners of all levels succeed in their tech careers.","url":"https:\/\/data-flair.training\/blogs\/author\/dfteam6\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/146825","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/users\/581"}],"replies":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/comments?post=146825"}],"version-history":[{"count":3,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/146825\/revisions"}],"predecessor-version":[{"id":146836,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/146825\/revisions\/146836"}],"wp:attachment":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media?parent=146825"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/categories?post=146825"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/tags?post=146825"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}