{
    "componentChunkName": "component---src-templates-post-template-tsx",
    "path": "/20220513/LinkedList/",
    "result": {"data":{"allMarkdownRemark":{"edges":[{"node":{"html":"<h1>LinkedList란?</h1>\n<p>LinkedList(연결리스트)는 각 노드가 ‘데이터와’ ‘포인터’를 가지고 한줄로 연결되어 잇는 방식으로 저장하는 자료구조이다.</p>\n<h1>LinkedList 구조 및 특징</h1>\n<h3><span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \">\n      <a class=\"gatsby-resp-image-link\" href=\"/static/2b737912874a4fedffa4199dace6bd78/f79d8/LinkedList1.png\" style=\"display: block\" target=\"_blank\" rel=\"noopener\">\n    <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 26.5625%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABBUlEQVQY053Qz0oCURTH8XminsBnaNuuoI37egGhoEXQMgKxgRD6sxnEkspptKhx/JMGZiKNhDg1oFEQMU2Z8405U0ItO5v7u5/LORyuglQA448oBYGcvv8+sfG3vfk+MPplnueFt0mvEoZu/wmzbnM/eJWHwXBIpWyi6U3Om49iD65L2TLZPWpR6zyLOY5DqWSiGR3avRcxZfQ5ZiZhMTV/wuyyJVg8uyCtbjC9kGFupS6WO8yzpSaJxfdZXL8W0zJZ1M0UsXiW1Z3baGC4Zr7qsq33MC5dQdvuclo4Zi1dIXVwJ9a6aVM0dJZSNfYKfbFG4wpdz5NIVslZUa/Cn/r5w//aF9MtaW4O3DNrAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"></span>\n  <picture>\n          <source srcset=\"/static/2b737912874a4fedffa4199dace6bd78/a59e9/LinkedList1.webp 192w,\n/static/2b737912874a4fedffa4199dace6bd78/0ca9f/LinkedList1.webp 384w,\n/static/2b737912874a4fedffa4199dace6bd78/dc9b9/LinkedList1.webp 768w,\n/static/2b737912874a4fedffa4199dace6bd78/6e312/LinkedList1.webp 991w\" sizes=\"(max-width: 768px) 100vw, 768px\" type=\"image/webp\">\n          <source srcset=\"/static/2b737912874a4fedffa4199dace6bd78/3b721/LinkedList1.png 192w,\n/static/2b737912874a4fedffa4199dace6bd78/66595/LinkedList1.png 384w,\n/static/2b737912874a4fedffa4199dace6bd78/fe486/LinkedList1.png 768w,\n/static/2b737912874a4fedffa4199dace6bd78/f79d8/LinkedList1.png 991w\" sizes=\"(max-width: 768px) 100vw, 768px\" type=\"image/png\">\n          <img class=\"gatsby-resp-image-image\" src=\"/static/2b737912874a4fedffa4199dace6bd78/fe486/LinkedList1.png\" alt=\"LinkedList1\" title=\"LinkedList1\" loading=\"lazy\" decoding=\"async\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\">\n        </picture>\n  </a>\n    </span></h3>\n<ul>\n<li>head : 첫번째 노드를 가르킨다.</li>\n<li>data : 실제 값이 저장되는 장소이다.</li>\n<li>next : 다음 노드의 포인터나 참조값이 저장되는 장소이다.</li>\n<li>node : Vertex라고도 하며, 데이터가 저장되는 요소이다. (ArrayList에서는 element라고 한다.)</li>\n<li>ArrayList와는 달리 인덱스가 없어 데이터 검색시 처음부터 노드를 순회해야 하기 때문에 속도가 느리다.</li>\n<li>ArrayList와는 달리 데이터의 추가 및 삭제시 불필요한 데이터의 복사가 없기 때문에 속도가 빠르다.</li>\n<li>데이터 추가 및 삭제시 시간 복잡도는 O(1)</li>\n<li>데이터 검색시 시간 복잡도는 O(N)</li>\n</ul>\n<h1>LinkedList 구현 코드</h1>\n<p>Node.java</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">public</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">Node</span> <span class=\"token punctuation\">{</span>\r\n    <span class=\"token class-name\">Object</span> data<span class=\"token punctuation\">;</span>\r\n    <span class=\"token class-name\">Node</span> nextNode <span class=\"token operator\">=</span> <span class=\"token keyword\">null</span><span class=\"token punctuation\">;</span>\r\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>LinkedList.java</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">public</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">LinkedList</span> <span class=\"token punctuation\">{</span>\r\n    <span class=\"token keyword\">private</span> <span class=\"token class-name\">Node</span> head<span class=\"token punctuation\">;</span>\r\n    <span class=\"token keyword\">private</span> <span class=\"token keyword\">int</span> size<span class=\"token punctuation\">;</span>\r\n\r\n    <span class=\"token keyword\">public</span> <span class=\"token class-name\">LinkedList</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\r\n        <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>head <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Node</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\r\n        <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>size <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\r\n    <span class=\"token punctuation\">}</span>\r\n\r\n    <span class=\"token comment\">/**\r\n     * 데이터 추가\r\n     * @param data \r\n     */</span>\r\n    <span class=\"token keyword\">private</span> <span class=\"token keyword\">void</span> <span class=\"token function\">add</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">Object</span> data<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\r\n        <span class=\"token class-name\">Node</span> node <span class=\"token operator\">=</span> head<span class=\"token punctuation\">;</span>\r\n        <span class=\"token class-name\">Node</span> newNode <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Node</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\r\n        newNode<span class=\"token punctuation\">.</span>data <span class=\"token operator\">=</span> data<span class=\"token punctuation\">;</span>\r\n\r\n        <span class=\"token keyword\">while</span><span class=\"token punctuation\">(</span>node<span class=\"token punctuation\">.</span>nextNode <span class=\"token operator\">!=</span> <span class=\"token keyword\">null</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\r\n            node <span class=\"token operator\">=</span> node<span class=\"token punctuation\">.</span>nextNode<span class=\"token punctuation\">;</span>\r\n        <span class=\"token punctuation\">}</span>\r\n        node<span class=\"token punctuation\">.</span>nextNode <span class=\"token operator\">=</span> newNode<span class=\"token punctuation\">;</span>\r\n        size<span class=\"token operator\">++</span><span class=\"token punctuation\">;</span>\r\n    <span class=\"token punctuation\">}</span>\r\n\r\n    <span class=\"token comment\">/**\r\n     * 데이터 삭제\r\n     * @param data \r\n     */</span>\r\n    <span class=\"token keyword\">private</span> <span class=\"token keyword\">void</span> <span class=\"token function\">remove</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">Object</span> data<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\r\n        <span class=\"token class-name\">Node</span> node <span class=\"token operator\">=</span> head<span class=\"token punctuation\">;</span>\r\n\r\n        <span class=\"token keyword\">while</span><span class=\"token punctuation\">(</span>node<span class=\"token punctuation\">.</span>nextNode <span class=\"token operator\">!=</span> <span class=\"token keyword\">null</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\r\n            <span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>node<span class=\"token punctuation\">.</span>nextNode<span class=\"token punctuation\">.</span>data <span class=\"token operator\">==</span> data<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\r\n                node<span class=\"token punctuation\">.</span>nextNode <span class=\"token operator\">=</span> node<span class=\"token punctuation\">.</span>nextNode<span class=\"token punctuation\">.</span>nextNode<span class=\"token punctuation\">;</span>\r\n                size<span class=\"token operator\">--</span><span class=\"token punctuation\">;</span>\r\n                <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\r\n            <span class=\"token punctuation\">}</span>\r\n            node <span class=\"token operator\">=</span> node<span class=\"token punctuation\">.</span>nextNode<span class=\"token punctuation\">;</span>\r\n        <span class=\"token punctuation\">}</span>\r\n    <span class=\"token punctuation\">}</span>\r\n\r\n    <span class=\"token comment\">/**\r\n     * 데이터가 존재하는지 확인\r\n     * @param data\r\n     * @return boolean \r\n     */</span>\r\n    <span class=\"token keyword\">private</span> <span class=\"token keyword\">boolean</span> <span class=\"token function\">contains</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">Object</span> data<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\r\n        <span class=\"token class-name\">Node</span> node <span class=\"token operator\">=</span> head<span class=\"token punctuation\">;</span>\r\n\r\n        <span class=\"token keyword\">while</span><span class=\"token punctuation\">(</span>node <span class=\"token operator\">!=</span> <span class=\"token keyword\">null</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\r\n            <span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>node<span class=\"token punctuation\">.</span>data <span class=\"token operator\">==</span> data<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\r\n                <span class=\"token keyword\">return</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">;</span>\r\n            <span class=\"token punctuation\">}</span>\r\n            node <span class=\"token operator\">=</span> node<span class=\"token punctuation\">.</span>nextNode<span class=\"token punctuation\">;</span>\r\n        <span class=\"token punctuation\">}</span>\r\n\r\n        <span class=\"token keyword\">return</span> <span class=\"token boolean\">false</span><span class=\"token punctuation\">;</span>\r\n    <span class=\"token punctuation\">}</span>\r\n\r\n    <span class=\"token comment\">/**\r\n     * 데이터 출력 위한 메서드 \r\n     */</span>\r\n    <span class=\"token keyword\">private</span> <span class=\"token keyword\">void</span> <span class=\"token function\">showList</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\r\n        <span class=\"token class-name\">Node</span> node <span class=\"token operator\">=</span> head<span class=\"token punctuation\">.</span>nextNode<span class=\"token punctuation\">;</span>\r\n\r\n        <span class=\"token keyword\">while</span><span class=\"token punctuation\">(</span>node<span class=\"token punctuation\">.</span>nextNode <span class=\"token operator\">!=</span> <span class=\"token keyword\">null</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\r\n            <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span>node<span class=\"token punctuation\">.</span>data <span class=\"token operator\">+</span> <span class=\"token string\">\",\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\r\n            node <span class=\"token operator\">=</span> node<span class=\"token punctuation\">.</span>nextNode<span class=\"token punctuation\">;</span>\r\n        <span class=\"token punctuation\">}</span>\r\n\r\n        <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>node<span class=\"token punctuation\">.</span>data<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\r\n    <span class=\"token punctuation\">}</span>\r\n\r\n    <span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">void</span> <span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">String</span> args<span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\r\n        <span class=\"token class-name\">LinkedList</span> list <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">LinkedList</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\r\n\r\n        list<span class=\"token punctuation\">.</span><span class=\"token function\">add</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"1\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\r\n        list<span class=\"token punctuation\">.</span><span class=\"token function\">add</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"2\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\r\n        list<span class=\"token punctuation\">.</span><span class=\"token function\">add</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"3\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\r\n\r\n        list<span class=\"token punctuation\">.</span><span class=\"token function\">showList</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\r\n        <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"contains : \"</span> <span class=\"token operator\">+</span> list<span class=\"token punctuation\">.</span><span class=\"token function\">contains</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"3\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\r\n\r\n        list<span class=\"token punctuation\">.</span><span class=\"token function\">remove</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"3\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\r\n        list<span class=\"token punctuation\">.</span><span class=\"token function\">remove</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"2\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\r\n\r\n        list<span class=\"token punctuation\">.</span><span class=\"token function\">showList</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\r\n        <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"contains : \"</span> <span class=\"token operator\">+</span> list<span class=\"token punctuation\">.</span><span class=\"token function\">contains</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"3\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\r\n\r\n    <span class=\"token punctuation\">}</span>\r\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h3>자세한 정보는</h3>\n<p><a href=\"https://github.com/gijoongjang/javaStudy/blob/master/src/linkedList\" target=\"_blank\" rel=\"nofollow\">https://github.com/gijoongjang/javaStudy/blob/master/src/linkedList</a></p>","frontmatter":{"title":"자바 LinkedList 개념 및 구현","summary":"JAVA,자료구조","date":"2022.05.13.","categories":["JAVA"],"thumbnail":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABBUlEQVQY053Qz0oCURTH8XminsBnaNuuoI37egGhoEXQMgKxgRD6sxnEkspptKhx/JMGZiKNhDg1oFEQMU2Z8405U0ItO5v7u5/LORyuglQA448oBYGcvv8+sfG3vfk+MPplnueFt0mvEoZu/wmzbnM/eJWHwXBIpWyi6U3Om49iD65L2TLZPWpR6zyLOY5DqWSiGR3avRcxZfQ5ZiZhMTV/wuyyJVg8uyCtbjC9kGFupS6WO8yzpSaJxfdZXL8W0zJZ1M0UsXiW1Z3baGC4Zr7qsq33MC5dQdvuclo4Zi1dIXVwJ9a6aVM0dJZSNfYKfbFG4wpdz5NIVslZUa/Cn/r5w//aF9MtaW4O3DNrAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/2b737912874a4fedffa4199dace6bd78/0801d/LinkedList1.png","srcSet":"/static/2b737912874a4fedffa4199dace6bd78/8f052/LinkedList1.png 248w,\n/static/2b737912874a4fedffa4199dace6bd78/9df0e/LinkedList1.png 496w,\n/static/2b737912874a4fedffa4199dace6bd78/0801d/LinkedList1.png 991w","sizes":"(min-width: 991px) 991px, 100vw"},"sources":[{"srcSet":"/static/2b737912874a4fedffa4199dace6bd78/14c3f/LinkedList1.webp 248w,\n/static/2b737912874a4fedffa4199dace6bd78/4b521/LinkedList1.webp 496w,\n/static/2b737912874a4fedffa4199dace6bd78/e4140/LinkedList1.webp 991w","type":"image/webp","sizes":"(min-width: 991px) 991px, 100vw"}]},"width":991,"height":265}},"publicURL":"/static/2b737912874a4fedffa4199dace6bd78/LinkedList1.png"}}}}]}},"pageContext":{"slug":"/20220513/LinkedList/"}},
    "staticQueryHashes": []}