자료구조와 알고리즘 실습 | Data Structures & Algorithms Lab
원형 연결 리스트의 노드를 생성합니다
class Node() : def __init__ (self) : self.data = None self.link = None node1 = Node() node1.data = "다현" node1.link = node1 node2 = Node() node2.data = "정연" node1.link = node2 node2.link = node1 node3 = Node() node3.data = "쯔위" node2.link = node3 node3.link = node1 node4 = Node() node4.data = "사나" node3.link = node4 node4.link = node1 node5 = Node() node5.data = "지효" node4.link = node5 node5.link = node1 current = node1 print(current.data, end =' ') while current.link != node1 : current = current.link print(current.data, end=' ')
Creates nodes for a circular linked list
class Node() : def __init__ (self) : self.data = None self.link = None node1 = Node() node1.data = "Dahyun" node1.link = node1 node2 = Node() node2.data = "Jungyeon" node1.link = node2 node2.link = node1 node3 = Node() node3.data = "Tzuyu" node2.link = node3 node3.link = node1 node4 = Node() node4.data = "Sana" node3.link = node4 node4.link = node1 node5 = Node() node5.data = "Jihyo" node4.link = node5 node5.link = node1 current = node1 print(current.data, end =' ') while current.link != node1 : current = current.link print(current.data, end=' ')
원형 연결 리스트에서 노드를 삽입합니다
class Node() : def __init__ (self) : self.data = None self.link = None node1 = Node() node1.data = "다현" node1.link = node1 node2 = Node() node2.data = "정연" node1.link = node2 node2.link = node1 node3 = Node() node3.data = "쯔위" node2.link = node3 node3.link = node1 node4 = Node() node4.data = "사나" node3.link = node4 node4.link = node1 node5 = Node() node5.data = "지효" node4.link = node5 node5.link = node1 newNode = Node() newNode.data = "재남" newNode.link = node2.link # 정연 노드의 링크 node2.link = newNode current = node1 print(current.data, end = ' ') while current.link != node1 : current = current.link print(current.data, end = ' ')
Inserts nodes into a circular linked list
class Node() : def __init__ (self) : self.data = None self.link = None node1 = Node() node1.data = "Dahyun" node1.link = node1 node2 = Node() node2.data = "Jungyeon" node1.link = node2 node2.link = node1 node3 = Node() node3.data = "Tzuyu" node2.link = node3 node3.link = node1 node4 = Node() node4.data = "Sana" node3.link = node4 node4.link = node1 node5 = Node() node5.data = "Jihyo" node4.link = node5 node5.link = node1 newNode = Node() newNode.data = "Jaenam" newNode.link = node2.link # Jungyeon node's link node2.link = newNode current = node1 print(current.data, end = ' ') while current.link != node1 : current = current.link print(current.data, end = ' ')
원형 연결 리스트에서 노드를 삭제합니다
class Node() : def __init__ (self) : self.data = None self.link = None node1 = Node() node1.data = "다현" node1.link = node1 node2 = Node() node2.data = "정연" node1.link = node2 node2.link = node1 node3 = Node() node3.data = "쯔위" node2.link = node3 node3.link = node1 node4 = Node() node4.data = "사나" node3.link = node4 node4.link = node1 node5 = Node() node5.data = "지효" node4.link = node5 node5.link = node1 node2.link = node3.link del(node3) current = node1 print(current.data, end = ' ') while current.link != node1 : current = current.link print(current.data, end = ' ')
Deletes nodes from a circular linked list
class Node() : def __init__ (self) : self.data = None self.link = None node1 = Node() node1.data = "Dahyun" node1.link = node1 node2 = Node() node2.data = "Jungyeon" node1.link = node2 node2.link = node1 node3 = Node() node3.data = "Tzuyu" node2.link = node3 node3.link = node1 node4 = Node() node4.data = "Sana" node3.link = node4 node4.link = node1 node5 = Node() node5.data = "Jihyo" node4.link = node5 node5.link = node1 node2.link = node3.link del(node3) current = node1 print(current.data, end = ' ') while current.link != node1 : current = current.link print(current.data, end = ' ')
원형 연결 리스트의 삽입/삭제 통합 프로그램입니다
## 클래스와 함수 선언 부분 ## class Node() : def __init__ (self) : self.data = None self.link = None def printNodes(start) :
## 전역 변수 선언 부분 ## memory = [] head, current, pre = None, None, None dataArray = ["다현", "정연", "쯔위", "사나", "지효"] ## 메인 코드 부분 ##
Complete circular linked list with insert and delete
## Class & Function Declarations ## class Node() : def __init__ (self) : self.data = None self.link = None def printNodes(start) :
## Global Variables ## memory = [] head, current, pre = None, None, None dataArray = ["Dahyun", "Jungyeon", "Tzuyu", "Sana", "Jihyo"] ## Main Code ## if __name__ == "__main__" : node = Node() node.data = dataArray[0] # First node head = node node.link = head memory.append(node) for data in dataArray[1:] : # From the second node onward pre = node node = Node() node.data = data pre.link = node node.link = head memory.append(node) printNodes(head)
이중 연결 리스트의 노드를 생성하고 연결합니다
## 클래스와 함수 선언 부분 ##
class Node() :
def __init__ (self) :
self.data = None
self.link = None
def printNodes(start):
def insertNode(findData, insertData) :
## 전역 변수 선언 부분 ## memory = [] head, current, pre = None, None, None dataArray = ["다현", "정연", "쯔위", "사나", "지효"] ## 메인 코드 부분 ##
Creates and connects nodes of a doubly linked list
## Class & Function Declarations ##
class Node() :
def __init__ (self) :
self.data = None
self.link = None
def printNodes(start):
def insertNode(findData, insertData) :
## Global Variables ##
memory = []
head, current, pre = None, None, None
dataArray = ["Dahyun", "Jungyeon", "Tzuyu", "Sana", "Jihyo"]
## Main Code ##
if __name__ == "__main__" :
node = Node()
node.data = dataArray[0] # First node
head = node
node.link = head
memory.append(node)
for data in dataArray[1:] : # From the second node onward
pre = node
node = Node()
node.data = data
pre.link = node
node.link = head
memory.append(node)
printNodes(head)
insertNode("Dahyun", "Hwasa")
printNodes(head)
insertNode("Sana", "Solar")
printNodes(head)
insertNode("Jaenam", "Moonbyul")
printNodes(head)
이중 연결 리스트에 노드를 삽입합니다
## 클래스와 함수 선언 부분 ## class Node() : def __init__ (self) : self.data = None self.link = None def printNodes(start):
def deleteNode(deleteData) :
## 전역 변수 선언 부분 ## memory = [] head, current, pre = None, None, None dataArray = ["다현", "정연", "쯔위", "사나", "지효"] ## 메인 코드 부분 ##
Inserts nodes into a doubly linked list
## Class & Function Declarations ## class Node() : def __init__ (self) : self.data = None self.link = None def printNodes(start):
def deleteNode(deleteData) :
## Global Variables ##
memory = []
head, current, pre = None, None, None
dataArray = ["Dahyun", "Jungyeon", "Tzuyu", "Sana", "Jihyo"]
## Main Code ##
if __name__ == "__main__" :
node = Node() # First node
node.data = dataArray[0]
head = node
node.link = head
memory.append(node)
for data in dataArray[1:] : # From the second node onward
pre = node
node = Node()
node.data = data
pre.link = node
node.link = head
memory.append(node)
printNodes(head)
deleteNode("Dahyun")
printNodes(head)
deleteNode("Tzuyu")
printNodes(head)
deleteNode("Jihyo")
printNodes(head)
deleteNode("Jaenam")
printNodes(head)
이중 연결 리스트에서 노드를 삭제합니다
## 클래스와 함수 선언 부분 ##
class Node() :
def __init__ (self) :
self.data = None
self.link = None
def printNodes(start):
def findNode(findData) :
## 전역 변수 선언 부분 ## memory = [] head, current, pre = None, None, None dataArray = ["다현", "정연", "쯔위", "사나", "지효"] ## 메인 코드 부분 ##
Deletes nodes from a doubly linked list
## Class & Function Declarations ##
class Node() :
def __init__ (self) :
self.data = None
self.link = None
def printNodes(start):
def findNode(findData) :
## Global Variables ##
memory = []
head, current, pre = None, None, None
dataArray = ["Dahyun", "Jungyeon", "Tzuyu", "Sana", "Jihyo"]
## Main Code ##
if __name__ == "__main__" :
node = Node() # First node
node.data = dataArray[0]
head = node
node.link = head
memory.append(node)
for data in dataArray[1:] : # From the second node onward
pre = node
node = Node()
node.data = data
pre.link = node
node.link = head
memory.append(node)
printNodes(head)
fNode = findNode("Dahyun")
print(fNode.data)
fNode = findNode("Tzuyu")
print(fNode.data)
fNode = findNode("Jaenam")
print(fNode.data)
랜덤 데이터로 이중 연결 리스트를 생성합니다
import random ## 클래스와 함수 선언 부분 ## class Node() : def __init__ (self) : self.data = None self.link = None def printNodes(start):
def countOddEven() :
def makeZeroNumber(odd, even):
## 전역 변수 선언 부분 ## memory = [] head, current, pre = None, None, None ## 메인 코드 부분 ##
Creates a doubly linked list with random data
import random ## Class & Function Declarations ## class Node() : def __init__ (self) : self.data = None self.link = None def printNodes(start):
def countOddEven() :
def makeZeroNumber(odd, even):
## Global Variables ##
memory = []
head, current, pre = None, None, None
## Main Code ##
if __name__ == "__main__" :
dataArray = []
for _ in range(7) :
dataArray.append(random.randint(1, 100))
node = Node()
node.data = dataArray[0]
head = node
node.link = head
memory.append(node)
for data in dataArray[1:] :
pre = node
node = Node()
node.data = data
pre.link = node
node.link = head
memory.append(node)
printNodes(head)
oddCount, evenCount = countOddEven()
print('odd -->', oddCount, '\t', 'even -->', evenCount)
makeZeroNumber(oddCount, evenCount)
printNodes(head)
원형 연결 리스트 응용: 랜덤 데이터 정렬 삽입
import random import math ## 클래스와 함수 선언 부분 ## class Node() : def __init__ (self) : self.data = None self.link = None def printStores(start) :
def makeStoreList(store) :
## 전역 변수 선언 부분 ## memory = [] head, current, pre = None, None, None ## 메인 코드 부분 ##
Circular linked list application: sorted insertion of random data
import random import math ## Class & Function Declarations ## class Node() : def __init__ (self) : self.data = None self.link = None def printStores(start) :
def makeStoreList(store) :
## Global Variables ## memory = [] head, current, pre = None, None, None ## Main Code ## if __name__ == "__main__" : storeArray = [] storeName = 'A' for _ in range(10) : store = (storeName, random.randint(1, 100), random.randint(1, 100) ) storeArray.append(store) storeName = chr(ord(storeName) + 1) # Change store name A->B->C... for store in storeArray : makeStoreList(store) printStores(head)
이중 연결 리스트 응용: 양방향 순회
## 클래스와 함수 선언 부분 ## class Node2() : def __init__ (self) : self.plink = None # 앞쪽 링크 self.data = None self.nlink = None # 뒤쪽 링크 def printNodes(start):
## 전역 변수 선언 부분 ## memory = [] head, current, pre = None, None, None dataArray = ["다현", "정연", "쯔위", "사나", "지효"] ## 메인 코드 부분 ##
Doubly linked list application: bidirectional traversal
## Class & Function Declarations ## class Node2() : def __init__ (self) : self.plink = None # previous link self.data = None self.nlink = None # next link def printNodes(start):
## Global Variables ## memory = [] head, current, pre = None, None, None dataArray = ["Dahyun", "Jungyeon", "Tzuyu", "Sana", "Jihyo"] ## Main Code ## if __name__ == "__main__" : node = Node2() # First node node.data = dataArray[0] head = node memory.append(node) for data in dataArray[1:] : # From the second node onward pre = node node = Node2() node.data = data pre.nlink = node node.plink = pre memory.append(node) printNodes(head)
원형 연결 리스트를 직접 구현합니다
## 클래스 및 함수 선언부 ##
class Node() :
def __init__ (self) :
self.data = None
self.link = None
def printNodes(start):
def findNode(findData) :
## 전역 변수 선언부 memory = [] head, current, pre = None, None, None dataArray = ["다현", "정연", "쯔위", "사나", "지효"] ## 메인 코드부
Implements a circular linked list yourself
## Class & Function Declarations ##
class Node() :
def __init__ (self) :
self.data = None
self.link = None
def printNodes(start):
def findNode(findData) :
## Global Variables
memory = []
head, current, pre = None, None, None
dataArray = ["Dahyun", "Jungyeon", "Tzuyu", "Sana", "Jihyo"]
## Main Code
if __name__ == "__main__" :
# First node
node = Node()
node.data = dataArray[0]
head = node
node.link = head
memory.append(node)
# From the second node onward
for data in dataArray[1:] :
pre = node
node = Node()
node.data = data
pre.link = node
node.link = head
memory.append(node)
printNodes(head)
fNode = findNode("Dahyun")
print(fNode.data)
fNode = findNode("Tzuyu")
print(fNode.data)
fNode = findNode("Jaenam")
print(fNode.data)이중 연결 리스트를 직접 구현합니다
import random
## 클래스 및 함수 선언부 ##
class Node() :
def __init__ (self) :
self.data = None
self.link = None
def printNodes(start) :
def countOddEven() :
def makeZeroNumber(odd, even):
## 전역 변수 선언부 memory = [] head, current, pre = None, None, None ## 메인 코드부
Implements a doubly linked list yourself
import random
## Class & Function Declarations ##
class Node() :
def __init__ (self) :
self.data = None
self.link = None
def printNodes(start) :
def countOddEven() :
def makeZeroNumber(odd, even):
## Global Variables
memory = []
head, current, pre = None, None, None
## Main Code
if __name__ == "__main__" :
dataArray = []
for _ in range(7) :
dataArray.append(random.randint(-100,100))
node = Node()
node.data = dataArray[0]
head = node
node.link = head
memory.append(node)
for data in dataArray[1:] :
pre = node
node = Node()
node.data = data
pre.link = node
node.link = head
memory.append(node)
printNodes(head)
plusCount, minusCount = countOddEven()
print('positive -->', plusCount, '\t', 'negative -->', minusCount)
makeZeroNumber(plusCount, minusCount)
printNodes(head)