연결 리스트 값 제거 하기( LinkedList ) [3/3] 연결 리스트 제거 종류? Pop : 연결리스트의 맨 앞의 노드를 제거 RemoveLast : 연결리스트의 맨 뒤의 노드 제거 Remove(at:) : 연결리스트의 특정 노드를 제거 Pop 구현 -> pop() 리스트의 맨 앞의 노드를 제거함 public mutating func pop() -> Value? { //제거할 맨 앞의 노드 반환 하고, 그 노드 없애서 제거 구현 defer{ //삭제 하기 전에, 데이터가 남아있을 때 삭제할 노드 반환 해줘야 하기 때문에 defer //defer : 함수에서 제일 나중에 실행 되게 만들어주는 키워드! head = head?.next // 현재의 head 를 제거할 목적 , 현재의 head에 다음 노드..
연결 리스트 값 추가 하기( LinkedList ) [2/3] 연결 리스트 종류? Push: 리스트 맨 앞에 값 추가 하기 Append: 리스트의 맨 뒤에 값 추가 하기 Insert(after): 리스트의 특정 노드 뒤에 값 추가(삽입)하기 head와 tail 선언 하기 public struct LinkedList { // 전체 연결리스트를 관리하는 하는 LinkedList 구조체 public var head: Node? public var tail: Node? public init() {} // 모든 프로퍼티들 옵셔널이면 nil 로 초기화됨. public var isEmpty: Bool { return head == nil // head 와 nil 을 비교해서 nil 이라면 true 반환. head 가..
알고리즘 &. 데이터 구조을 공부하는 이유? 데이터 구조의 정의 프로그래밍에 있어 효율적이며, 확장 가능하고 유지 보수성 높은 시스템을 만들기 위한 주요 요소 중 하나 시스템에서 데이터의 공유, 유지, 정렬, 검색 등 데이터의 활용을 위한 데이터의 체계화 방법 추가 내용 영국의 컴퓨터 과학자 David Wheeler 가 정의한 데이터 구조에서 “컴퓨터 과학의 모든 문제는 새로운 차원에서의 접근 방식으로 해결될 수 있으며..” 라는 구절이 있다. 작은 애플리케이션은 물론, 모바일 애플리케이션, 그리고 그 기업을 위한 대규모 웹 어플리케이션 등 어떤 유형의 시스템을 개발하더라도 그 모든 애플리케이션의 토대는 결국 데이터로 귀결된다. 애플리케이션 개발에는 놀랄만한 성능의 효율성을 제공하는 프레임워크와 라이브러..
연결 리스트( LinkedList ) [1/3] 연결 리스트란 무엇인가? 선형적으로 (직선 같은 ) 단방향 연속성으로 정렬된 값의 모음이다. A collection of values arranged in a linear unidirectional sequence. 배열(Array)와는 다른 구조이다. 특징 값을 가지고 있다. 다음 노드의 ‘참조 정보’를 가지고 있다. (참조 정보를 가지고 있기 때문에 다음 노드를 가리킬 수 있다.(포인터 역할)) 위의 설명을 바탕으로 실제 코드로 구현합니다. 코드 & 설명 Node 구현 public class Node { //Node 클래스를 라는 Generics 타입으로, public 으로 모든 모듈에서 접근 가능하도록 정의 한다. public var value: Va..