-
Linked List개발 지식/알고리즘 2020. 6. 29. 20:07
Ruby로 작성되었습니다.
- Node
1234567891011121314151617181920212223# frozen_string_literal: trueclass Nodeattr_accessor :prev, :value, :nextdef initialize(left, value, right)@prev = left@value = value@next = rightendendnode1 = Node.new(nil, 1, nil)node2 = Node.new(node1, 2, nil)node2.prev.next = node2node3 = Node.new(node2, 3, nil)node3.prev.next = node3puts node1.valueputs node2.prev.valueputs node2.valueputs node3.prev.valueputs node2.next.valuecs - Linked List
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283# frozen_string_literal: trueclass Nodeattr_accessor :prev, :value, :nextdef initialize(left, value, right)@prev = left@value = value@next = rightendendclass LinkedListdef initialize(value)@head = Node.new(nil, value, nil)enddef insert_node(value)cur_node = @headif @head.nil?@head = Node.new(nil, value, nil)elsecur_node = cur_node.next until cur_node.next.nil?cur_node.next = Node.new(cur_node, value, nil)endenddef delete_node(value)cur_node = @headif cur_node.value == valueif cur_node.next.nil?@head = nilelse@head = cur_node.next@head.prev = nilendelseuntil cur_node.next.nil?cur_node = cur_node.nextnext unless cur_node.value == valuecur_node.prev.next = cur_node.nextcur_node.next.prev = cur_node.prev unless cur_node.next.nil?endendenddef read_nodescur_node = @headuntil cur_node.nil?print "#{cur_node.value},"cur_node = cur_node.nextendputsendendlist = LinkedList.new(0)list.insert_node(1)list.insert_node(2)list.insert_node(1)list.insert_node(3)print 'result: 'list.read_nodeslist.delete_node(1)print 'result: 'list.read_nodeslist.delete_node(0)print 'result: 'list.read_nodeslist.delete_node(3)print 'result: 'list.read_nodeslist.delete_node(2)print 'last result: 'list.read_nodeslist.insert_node(3)print 'result: 'list.read_nodescs '개발 지식 > 알고리즘' 카테고리의 다른 글
스택, 큐 (0) 2020.06.30 메모리 관리 (0) 2020.06.30 포인터, 매개변수, CBV, CBR (0) 2020.06.29 배열 접근 (0) 2020.06.29 infix, postfix (0) 2020.06.29