_%EC%B6%9C%EB%A0%A5.png)
#단일 링크드 리스트
class SLinkedList:
    #S_L_list에서 쓸 노드
    class Node:
        def __init__(self, v, n = None):
            self.value = v #저장된 데이터
            self.next = n #다음 노드 가리키는 변수
    #S_L_List에서 필요한 변수
    def __init__(self):
        self.head = None #첫 생성시 내부에는 노드가 없음
    #삽입
    def insertNode(self, v): #추가할 데이터
        #만일 처음 노드일 경우 -> head값이 None임
        if self.head is None :
            #head에 새 노드를 저장
            self.head = self.Node(v)
        else: #이미 노드가 있는 경우
            # head에 새 노드를 저장
            # 기존 head에 저장된 노드는 새로 생성할 노드의 next로 저장
            self.head = self.Node(v,self.head)
    def printNode(self):
        #데이터가 없을 때
        if self.head is None:
            print("저장된 데이터가 없음")
            return
        else:
            print("<현재 리스트 구조>", end='\t')
            link = self.head #처음은 head를 지정. 이후부터는 현 노드의 next를 지정
            #link가 가리키는 노드가 없을 때까지 반복
            #None,0,""는 조건판단에서 False 처리, 그 외는 True로 처리된다.
            while link :
                print(link.value, '->' , end = ' ')
                link = link.next #link를 현 위치 노드의 next로 변경
            print() #줄바꿈 용
##테스트
if __name__=="__main__":
    sl = SLinkedList()
    sl.printNode() #출력
    sl.insertNode('1st')
    sl.insertNode('2nd')
    sl.insertNode('3rd')
    sl.printNode() #출력
저장된 데이터가 없음
<현재 리스트 구조>	3rd -> 2nd -> 1st -> 
'저장된 데이터가 없음' 출력
head가 가리키는 Node의 value 출력한 후, 변수 next가 None이 아니면 next를 통해 다음 노드로 이동하여 value를 출력함
이 과정을 next가 None일 때까지 반복함