{"id":29742,"date":"2022-05-16T17:20:00","date_gmt":"2022-05-16T15:20:00","guid":{"rendered":"https:\/\/www.happycoders.eu\/?p=29742"},"modified":"2024-11-27T15:11:59","modified_gmt":"2024-11-27T14:11:59","slug":"queue-implementieren-stack","status":"publish","type":"post","link":"https:\/\/www.happycoders.eu\/de\/algorithmen\/queue-implementieren-stack\/","title":{"rendered":"Queue mit einem Stack implementieren"},"content":{"rendered":"\n<p>In diesem Teil der Tutorialserie zeige ich dir, wie man eine Queue mit einem Stack (genauer gesagt: mit zwei Stacks) implementiert.<\/p>\n\n\n\n<p>Diese Variante hat keinen praktischen Nutzen, sondern ist in erster Linie eine \u00dcbungsaufgabe. Als solche ist sie das Gegenst\u00fcck zur <a href=\"\/de\/algorithmen\/stack-implementieren-queue\/\">Implementierung eines Stacks mit einer Queue<\/a>.<\/p>\n\n\n\n<p>Zur Erinnerung: <a href=\"\/de\/algorithmen\/stack-datenstruktur\/\">ein Stack ist eine Datenstruktur<\/a>, bei der die Elemente in der umgekehrten Reihenfolge des Einf\u00fcgens abgerufen werden, also eine Last-in-first-out-Datenstruktur (LIFO).<\/p>\n\n\n\n<p>Wie k\u00f6nnen wir damit eine Queue, also eine <em>First-in<\/em>-first-out-Datenstruktur (FIFO) implementieren?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"die-loesung-schritt-fuer-schritt\">Die L\u00f6sung \u2013 Schritt f\u00fcr Schritt<\/h2>\n\n\n\n<p>Das erste Element, dass wir in die Queue einf\u00fcgen, legen wir auf einen Stack (im Beispiel: \"banana\"). Um es aus der Queue zu entnehmen, holen wir es wieder vom Stack:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-half_400\"><img decoding=\"async\" width=\"400\" height=\"101\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-one-element-400x101.png\" alt=\"Einf\u00fcgen und Entnehmen eines Elements aus einem Stack\" class=\"wp-image-29759\" srcset=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-one-element-400x101.png 400w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-one-element-224x57.png 224w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-one-element-336x85.png 336w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-one-element-504x127.png 504w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-one-element-672x170.png 672w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-one-element-600x152.png 600w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-one-element.png 800w\" sizes=\"(max-width: 400px) 100vw, 400px\" \/><\/figure>\n<\/div>\n\n\n<p>Mit dem zweiten Element funktioniert das so schon nicht mehr, denn der Stack arbeitet ja nach dem LIFO-Prinzip. Wenn z. B. \"banana\" und \"cherry\" auf dem Stack liegen, m\u00fcssten wir \"cherry\" als erstes wieder entnehmen:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-half_400\"><img decoding=\"async\" width=\"400\" height=\"137\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-two-elements-400x137.png\" alt=\"Einf\u00fcgen und Entnehmen zweier Elemente aus einem Stack\" class=\"wp-image-29760\" srcset=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-two-elements-400x137.png 400w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-two-elements-224x76.png 224w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-two-elements-336x115.png 336w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-two-elements-504x172.png 504w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-two-elements-672x229.png 672w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-two-elements-600x205.png 600w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-two-elements.png 791w\" sizes=\"(max-width: 400px) 100vw, 400px\" \/><\/figure>\n<\/div>\n\n\n<p>Bei einer Queue wollen wir jedoch das <em>zuerst<\/em> eingef\u00fcgte Element (also \"banana\") auch <em>als erstes<\/em> wieder entnehmen.<\/p>\n\n\n\n<p>Das ist mit einem Stack allein nicht m\u00f6glich.<\/p>\n\n\n\n<p>Stattdessen gehen wir beim Einf\u00fcgen eines Elements in die Queue wie folgt vor:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Wir erzeugen einen tempor\u00e4ren Stack (in der Grafik unten orange dargestellt) und verschieben alle Elemente des urspr\u00fcnglichen Stacks auf den tempor\u00e4ren Stack.<\/li><li>Wir legen das neue Element auf den urspr\u00fcnglichen Stack.<\/li><li>Wir schieben alle Elemente zur\u00fcck vom tempor\u00e4ren Stack auf den urspr\u00fcnglichen Stack. Der tempor\u00e4re Stack wird dann nicht mehr ben\u00f6tigt.<\/li><\/ol>\n\n\n\n<p>Die folgende Grafik zeigt die drei Schritte:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full_800\"><img decoding=\"async\" width=\"800\" height=\"486\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-two-elements-right-800x486.png\" alt=\"Zweites Element &quot;cherry&quot; in die Queue einf\u00fcgen\" class=\"wp-image-29775\" srcset=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-two-elements-right-800x486.png 800w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-two-elements-right-224x136.png 224w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-two-elements-right-336x204.png 336w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-two-elements-right-504x306.png 504w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-two-elements-right-672x408.png 672w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-two-elements-right-400x243.png 400w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-two-elements-right-600x365.png 600w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-two-elements-right-944x573.png 944w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-two-elements-right-1200x729.png 1200w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-two-elements-right.png 1600w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><figcaption>Zweites Element \"cherry\" in die Queue einf\u00fcgen<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Danach liegen die Elemente so auf dem Stack, dass wir als erstes das zuerst eingef\u00fcgte Element \"banana\" entnehmen k\u00f6nnen und dann das als zweites eingef\u00fcgte Element \"cherry\".<\/p>\n\n\n\n<p>Das funktioniert so nicht nur mit zwei Elementen, sondern mit beliebig vielen. Die folgende Grafik zeigt, wie wir ein drittes Element \"grape\" in die Queue einf\u00fcgen:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full_800\"><img decoding=\"async\" width=\"800\" height=\"837\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-three-elements-800x837.png\" alt=\"Drittes Element &quot;grape&quot; in die Queue einf\u00fcgen\" class=\"wp-image-29776\" srcset=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-three-elements-800x837.png 800w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-three-elements-224x234.png 224w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-three-elements-336x352.png 336w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-three-elements-504x527.png 504w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-three-elements-672x703.png 672w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-three-elements-400x419.png 400w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-three-elements-600x628.png 600w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-three-elements-944x988.png 944w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-three-elements-1200x1256.png 1200w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/implement-queue-using-stacks-three-elements.png 1600w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><figcaption>Drittes Element \"grape\" in die Queue einf\u00fcgen<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Danach k\u00f6nnen wir die Elemente in First-in-First-out-Reihenfolge aus der Queue entnehmen, also erst die zuerst eingef\u00fcgte \"banana\", dann die \"cherry\", und dann die zuletzt eingef\u00fcgte \"grape\".<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"quellcode-fuer-die-queue-mit-stacks\">Quellcode f\u00fcr die Queue mit Stacks<\/h2>\n\n\n\n<p>Der Quellcode f\u00fcr diesen Algorithmus ben\u00f6tigt nur wenige Zeilen Java-Code.<\/p>\n\n\n\n<p>Als Stack verwende ich den <a href=\"\/de\/algorithmen\/stack-implementieren-array\/\">im Stack-Tutorial vorgestellten ArrayStack<\/a>. Genauso gut k\u00f6nntest du die JDK-Klasse <code>Stack<\/code> oder eine beliebige <code>Deque<\/code>-Implementierung, z. B. ein <a href=\"\/de\/algorithmen\/arraydeque-java\/\">ArrayDeque<\/a>, verwenden.<\/p>\n\n\n\n<p>Du findest den Code in der Klasse <a href=\"https:\/\/github.com\/SvenWoltmann\/java-collections-guide\/blob\/main\/src\/main\/java\/eu\/happycoders\/collections\/queue\/StackQueue.java\" target=\"_blank\" rel=\"noopener\">StackQueue<\/a> im GitHub-Repository.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">StackQueue<\/span>&lt;<span class=\"hljs-title\">E<\/span>&gt; <span class=\"hljs-keyword\">implements<\/span> <span class=\"hljs-title\">Queue<\/span>&lt;<span class=\"hljs-title\">E<\/span>&gt; <\/span>{\n\n  <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">final<\/span> Stack&lt;E&gt; stack = <span class=\"hljs-keyword\">new<\/span> ArrayStack&lt;&gt;();\n\n  <span class=\"hljs-meta\">@Override<\/span>\n  <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">enqueue<\/span><span class=\"hljs-params\">(E element)<\/span> <\/span>{\n    <span class=\"hljs-comment\">\/\/ 1. Move elements from main stack to a temporary stack<\/span>\n    Stack&lt;E&gt; temporaryStack = <span class=\"hljs-keyword\">new<\/span> ArrayStack&lt;&gt;();\n    <span class=\"hljs-keyword\">while<\/span> (!stack.isEmpty()) {\n      temporaryStack.push(stack.pop());\n    }\n\n    <span class=\"hljs-comment\">\/\/ 2. Push new element on the main stack<\/span>\n    stack.push(element);\n\n    <span class=\"hljs-comment\">\/\/ 3. Move elements back from temporary stack to main stack<\/span>\n    <span class=\"hljs-keyword\">while<\/span> (!temporaryStack.isEmpty()) {\n      stack.push(temporaryStack.pop());\n    }\n  }\n\n  <span class=\"hljs-meta\">@Override<\/span>\n  <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> E <span class=\"hljs-title\">dequeue<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    <span class=\"hljs-keyword\">return<\/span> stack.pop();\n  }\n\n  <span class=\"hljs-meta\">@Override<\/span>\n  <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> E <span class=\"hljs-title\">peek<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    <span class=\"hljs-keyword\">return<\/span> stack.peek();\n  }\n\n  <span class=\"hljs-meta\">@Override<\/span>\n  <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">boolean<\/span> <span class=\"hljs-title\">isEmpty<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    <span class=\"hljs-keyword\">return<\/span> stack.isEmpty();\n  }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Beachte, dass hier nicht das <code>java.util.Queue<\/code>-Interface implementiert wird. Dieses erbt von <code>java.util.Collection<\/code>, sodass wir wesentlich mehr Methoden implementieren m\u00fcssten.<\/p>\n\n\n\n<p>Stattdessen habe ich f\u00fcr dieses Tutorial ein eigenes <a rel=\"noopener\" href=\"https:\/\/github.com\/SvenWoltmann\/java-collections-guide\/blob\/main\/src\/main\/java\/eu\/happycoders\/collections\/queue\/Queue.java\" target=\"_blank\">Queue-Interface<\/a> geschrieben, das nur die Methoden <code>enqueue()<\/code>, <code>dequeue()<\/code>, <code>peek()<\/code> und <code>isEmpty()<\/code> definiert:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">interface<\/span> <span class=\"hljs-title\">Queue<\/span>&lt;<span class=\"hljs-title\">E<\/span>&gt; <\/span>{\n  <span class=\"hljs-function\"><span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">enqueue<\/span><span class=\"hljs-params\">(E element)<\/span><\/span>;\n  <span class=\"hljs-function\">E <span class=\"hljs-title\">dequeue<\/span><span class=\"hljs-params\">()<\/span><\/span>;\n  <span class=\"hljs-function\">E <span class=\"hljs-title\">peek<\/span><span class=\"hljs-params\">()<\/span><\/span>;\n  <span class=\"hljs-function\"><span class=\"hljs-keyword\">boolean<\/span> <span class=\"hljs-title\">isEmpty<\/span><span class=\"hljs-params\">()<\/span><\/span>;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Zum Einsatz der Queue kannst du dir das Demo-Programm <a rel=\"noopener\" href=\"https:\/\/github.com\/SvenWoltmann\/java-collections-guide\/blob\/main\/src\/main\/java\/eu\/happycoders\/demos\/queue\/QueueDemo.java\" target=\"_blank\">QueueDemo<\/a> ansehen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"ausblick\">Ausblick<\/h2>\n\n\n\n<p>Im n\u00e4chsten Teil des Tutorials erf\u00e4hrst du, <a href=\"\/de\/algorithmen\/queue-implementieren-linked-list\/\">wie man eine Queue mit einer verketteten Liste implementiert<\/a>.<\/p>\n\n\n\n<p>Wenn du noch Fragen hast, stelle sie gerne \u00fcber die Kommentar-Funktion. M\u00f6chtest du \u00fcber neue Tutorials und Artikel informiert werden? Dann <a href=\"#\" data-formkit-toggle=\"d8ee997126\">klicke hier<\/a>, um dich f\u00fcr den HappyCoders.eu-Newsletter anzumelden.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wie implementiert man eine Queue mit einem Stack (besser gesagt: mit zwei Stacks)? Tutorial mit Grafiken und Java-Code-Beispielen.<\/p>\n","protected":false},"author":1,"featured_media":29749,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"none","_seopress_titles_title":"","_seopress_titles_desc":"Wie implementiert man eine Queue mit einem Stack (besser gesagt: mit zwei Stacks)? Tutorial mit Grafiken und Java-Code-Beispielen.","_seopress_robots_index":"","_uag_custom_page_level_css":"","_metis_text_type":"standard","_metis_text_length":4271,"_post_count":0,"footnotes":""},"categories":[127],"tags":[192],"class_list":["post-29742","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-algorithmen","tag-datenstrukturen-queue"],"uagb_featured_image_src":{"full":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/building-674828-1770x986-1.jpg",1770,986,false],"thumbnail":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/building-674828-1770x986-1.jpg",150,84,false],"medium":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/building-674828-1770x986-1.jpg",300,167,false],"medium_large":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/building-674828-1770x986-1.jpg",768,428,false],"large":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/building-674828-1770x986-1.jpg",1024,570,false],"feature_thumb_224":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/building-674828-1770x986-1-224x125.jpg",224,125,true],"feature_thumb_336":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/building-674828-1770x986-1-336x187.jpg",336,187,true],"feature_thumb_504":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/building-674828-1770x986-1-504x281.jpg",504,281,true],"feature_thumb_672":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/building-674828-1770x986-1-672x374.jpg",672,374,true],"half_400":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/building-674828-1770x986-1-400x223.jpg",400,223,true],"half_600":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/building-674828-1770x986-1-600x334.jpg",600,334,true],"full_800":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/building-674828-1770x986-1-800x446.jpg",800,446,true],"full_944":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/building-674828-1770x986-1-944x526.jpg",944,526,true],"full_1200":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/building-674828-1770x986-1-1200x668.jpg",1200,668,true],"wide_1180":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/building-674828-1770x986-1-1180x490.jpg",1180,490,true],"wide_1770":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/building-674828-1770x986-1-1770x735.jpg",1770,735,true],"1536x1536":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/building-674828-1770x986-1.jpg",1536,856,false],"2048x2048":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/building-674828-1770x986-1.jpg",1770,986,false]},"uagb_author_info":{"display_name":"Sven Woltmann","author_link":"https:\/\/www.happycoders.eu\/de\/author\/sven\/"},"uagb_comment_info":0,"uagb_excerpt":"Wie implementiert man eine Queue mit einem Stack (besser gesagt: mit zwei Stacks)? Tutorial mit Grafiken und Java-Code-Beispielen.","public_identification_id":"3849b0ba48a5407b9d4ece0459168956","private_identification_id":"7c9e6f723fb9400f86e2910d95477f4e","_links":{"self":[{"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts\/29742","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/comments?post=29742"}],"version-history":[{"count":10,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts\/29742\/revisions"}],"predecessor-version":[{"id":31210,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts\/29742\/revisions\/31210"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/media\/29749"}],"wp:attachment":[{"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/media?parent=29742"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/categories?post=29742"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/tags?post=29742"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}