1 00:00:00,000 --> 00:00:11,460 2 00:00:11,460 --> 00:00:12,250 >> DAVID 마란 : 좋아요. 3 00:00:12,250 --> 00:00:13,860 CS50에 다시 오신 것을 환영합니다. 4 00:00:13,860 --> 00:00:16,190 이 주 (8)의 시작이다. 5 00:00:16,190 --> 00:00:21,320 그리고 그 문제 5 세트가 종료 되 도전의 작은 비트. 6 00:00:21,320 --> 00:00:25,210 그래서 당신은 당신의 모든 복구 가​​정 교육 휄로우 CA의 사진 7 00:00:25,210 --> 00:00:30,480 card.raw 파일에서, 당신은 자격이 지금 그 사람들을 모두 찾아하는 8 00:00:30,480 --> 00:00:34,510 하나의 행운의 당첨자는 하나의 집으로 안내합니다 이러한 것들, 도약 운동 9 00:00:34,510 --> 00:00:37,450 당신이 마지막에 사용할 수있는 장치 예를 들어 프로젝트. 10 00:00:37,450 --> 00:00:39,860 >> 이것은 매년 리드 creepiness의 비트. 11 00:00:39,860 --> 00:00:43,480 그래서 내가 내가 할 거라고 생각하는 것은 공유입니다 당신과 함께있을 노트의 일부 12 00:00:43,480 --> 00:00:47,370 앞뒤로 사라 후반의 직원 목록입니다. 13 00:00:47,370 --> 00:00:51,110 예, 바로 지난 밤, 견적 직원 중 하나에서, 맺다 14 00:00:51,110 --> 00:00:55,000 회원은, "난 그냥 학생 노크를했다 내 문을 나와 함께 사진을 촬영합니다. 15 00:00:55,000 --> 00:00:59,020 스토커가 당신을 말해. "시작했다 우리가 이동 한 후 공정 설명 및 16 00:00:59,020 --> 00:01:02,830 에 한 시간 정도 후, "나는했다 학생이 섹션 뒤에 나를 기다리고 17 00:01:02,830 --> 00:01:06,080 그는 우리의 이름과 사진을 모두 가지고 몇 장의 용지에. "좋아. 18 00:01:06,080 --> 00:01:09,230 그래서 조직,하지만 아직 모든 오싹. 19 00:01:09,230 --> 00:01:12,520 >> 그런 다음, "나는 이번 주말, 외출했다가 내가 돌아 왔을 때, 하나 있었다 20 00:01:12,520 --> 00:01:12,630 나의 21 00:01:12,630 --> 00:01:16,740 침실. "[웃음] 22 00:01:16,740 --> 00:01:20,410 DAVID 마란 : 직원 다음 인용 회원 "학생에 집에 와서 23 00:01:20,410 --> 00:01:25,330 4에서 서머 빌이 아침에 오전. "다음 직원은, "나는 산에있는 나의 호텔에 도착 24 00:01:25,330 --> 00:01:30,016 시스코와 학생이 기다리고 있었다 세 DSLR 카메라와 로비 나. " 25 00:01:30,016 --> 00:01:31,510 카메라의 종류. 26 00:01:31,510 --> 00:01:34,980 "나는 직원이 이번 학기에도 아니에요 하지만 학생이 내 집에이 파산 27 00:01:34,980 --> 00:01:40,480 모든 것은 아침과 기록 . 구글 유리 "그리고 마지막으로, 28 00:01:40,480 --> 00:01:43,650 "적어도 12 명이 열심히했다 내가 밖으로 왔을 때 나를 위해 기다리고 29 00:01:43,650 --> 00:01:44,800 리무진, 그리고 I 30 00:01:44,800 --> 00:01:46,970 일어났다. "좋아. 31 00:01:46,970 --> 00:01:57,690 그래서 사진 가운데로 당신은 할 수있다 기억이 동료는 누가 여기에있다 32 00:01:57,690 --> 00:02:01,850 살고 마일로 바나나로 알고 있습니다 로렌 카르발류, 우리의 머리 33 00:02:01,850 --> 00:02:02,905 연구원 교수. 34 00:02:02,905 --> 00:02:05,170 마일로 마일로, 이리와. 35 00:02:05,170 --> 00:02:06,320 밀로. 36 00:02:06,320 --> 00:02:08,650 밀로. 37 00:02:08,650 --> 00:02:12,230 당신을 마음, 그는 그래서 구글 유리를 입고 우리는 당신이 모든 후 보여 드리죠. 38 00:02:12,230 --> 00:02:16,190 당신이 좋아하면 것인지 그래서 이것은 마일로 이후 그와 함께 사진을 찍고. 39 00:02:16,190 --> 00:02:18,240 당신은 밖으로보고 싶으면 거기에 관객. 40 00:02:18,240 --> 00:02:19,430 확인을 클릭합니다. 41 00:02:19,430 --> 00:02:20,200 그 좋은 영상입니다. 42 00:02:20,200 --> 00:02:22,556 음, 마일로 바나나. 43 00:02:22,556 --> 00:02:23,941 아,하지 않습니다. 44 00:02:23,941 --> 00:02:29,020 >> [웃음] 45 00:02:29,020 --> 00:02:29,470 >> 확인을 클릭합니다. 46 00:02:29,470 --> 00:02:34,550 앞에 무슨 일이 있을지에 다음 단어 때문에, 우리가 변화하기 시작하기 때문에, 47 00:02:34,550 --> 00:02:38,410 이번 주 특히,에 C에서 명령 줄 PHP로 환경과 48 00:02:38,410 --> 00:02:42,720 자바 스크립트와 SQL 및 HTML과 CSS에 웹 기반 환경에서, 우리는 할 수 있습니다 49 00:02:42,720 --> 00:02:44,490 모든 당신을 장착 에 대한 더 많은 지식 50 00:02:44,490 --> 00:02:46,010 잠재적 인 최종 프로젝트. 51 00:02:46,010 --> 00:02:49,240 이를 위해 코스를 가지고 세미나 개최의 전통있는 52 00:02:49,240 --> 00:02:50,950 접선 주제에있다 코스. 53 00:02:50,950 --> 00:02:54,330 매우 프로그래밍과에 관련 앱 개발 등등하지만, 54 00:02:54,330 --> 00:02:57,010 필요에 의해 탐구하지 물론 자신의 강의. 55 00:02:57,010 --> 00:03:00,250 >> 하나에 관심이있을 수 있습니다 그래서 만약 올해의 세미나 이상 56 00:03:00,250 --> 00:03:02,530 cs50.net/seminar에 등록. 57 00:03:02,530 --> 00:03:06,170 이전 세미나가 있습니다 cs50.net/seminars에서. 58 00:03:06,170 --> 00:03:10,620 그리고 올해 지금까지 명단에 루비와 놀라운 웹 애플 리케이션에있다 59 00:03:10,620 --> 00:03:13,580 대안 레일, PHP로 언어입니다. 60 00:03:13,580 --> 00:03:14,900 전산 언어학. 61 00:03:14,900 --> 00:03:18,710 이다 IOS에 소개 그리고 아이폰 사용되는 플랫폼 62 00:03:18,710 --> 00:03:19,850 아이 패드 개발. 63 00:03:19,850 --> 00:03:22,890 자바 스크립트는 웹 애플 리케이션을 위해, 우리는 다룰 것이다 즉, 본 세미나에서, 당신은 갈 것이다 64 00:03:22,890 --> 00:03:24,070 더 자세히. 65 00:03:24,070 --> 00:03:27,390 >> 모션 도약, ​​그래서 우리는 실제로 몇 가지가 있습니다 도약 동작에서 우리의 친구, 66 00:03:27,390 --> 00:03:29,160 회사 자체는 우리를 가입 할 수 있습니다. 67 00:03:29,160 --> 00:03:31,800 내일, 사실, 제공하는 실습 세미나 경우 68 00:03:31,800 --> 00:03:33,320 여러분의 관심. 69 00:03:33,320 --> 00:03:38,770 Meteor.js에 대한 대체 기술 하지 않는 브라우저에서 자바 스크립트를 사용하여 70 00:03:38,770 --> 00:03:39,970 하지만 서버. 71 00:03:39,970 --> 00:03:42,110 아주 많이 Node.js, 그 정맥뿐만 아니라. 72 00:03:42,110 --> 00:03:43,650 매끄러운 안드로이드 디자인. 73 00:03:43,650 --> 00:03:46,990 안드로이드는 매우 인기있는 대안이되고 IOS 및 Windows 전화에 74 00:03:46,990 --> 00:03:48,790 다른 모바일 플랫폼. 75 00:03:48,790 --> 00:03:51,180 웹 보안 적극적인 방어. 76 00:03:51,180 --> 00:03:54,590 >> 그래서 사실, 당신이 좋아하면 것인지 이에 종사하는, 나를 보자 77 00:03:54,590 --> 00:03:55,840 이주의합니다. 78 00:03:55,840 --> 00:03:57,790 우리는 그 말을 아주 행복 도약에서 우리의 친구 79 00:03:57,790 --> 00:03:59,140 시작이 모션 - 80 00:03:59,140 --> 00:04:01,300 이 장치는 정말 그냥 왔어요 몇 달 전 중 1 - 81 00:04:01,300 --> 00:04:05,960 우아 30 같은 장치를 기부했다 많은 학생들과의 수업, 경우에 82 00:04:05,960 --> 00:04:08,670 당신은 하드웨어를 빌려 싶습니다 학기의 끝 부분에 대해 사용 83 00:04:08,670 --> 00:04:10,390 실제 최종 프로젝트. 84 00:04:10,390 --> 00:04:11,890 그들은 여러 언어를 지원합니다. 85 00:04:11,890 --> 00:04:16,040 그들 중 아무도 그렇게 C, 그들 중 누구도 PHP, 실현이 세미나 중 하나 이상 86 00:04:16,040 --> 00:04:16,899 관심 증명할 수 있습니다. 87 00:04:16,899 --> 00:04:19,730 그리고 그들 모두는에서 촬영 될 것입니다 당신이 수 없습니다하는 경우 88 00:04:19,730 --> 00:04:21,380 사람에 참석한다. 89 00:04:21,380 --> 00:04:25,000 일정을 통해 발표 우리가 방을 응고로 이메일을 보내십시오. 90 00:04:25,000 --> 00:04:28,460 >> 그리고 마지막으로, 당신은에 가면 projects.cs.50.net,이 웹 사이트입니다 91 00:04:28,460 --> 00:04:31,450 우리는 우리가 초대 매년 것이라고 주장 사회, 교직원의 여러분 92 00:04:31,450 --> 00:04:36,420 부서, 직원, 두 CS50에의 외부에있는 93 00:04:36,420 --> 00:04:37,730 프로젝트 아이디어를 제안한다. 94 00:04:37,730 --> 00:04:39,050 학생 그룹에 관심 있어요. 95 00:04:39,050 --> 00:04:40,600 부서의 관심 있어요. 96 00:04:40,600 --> 00:04:43,990 당신이 어려움을 겪고 있다면 그래서이 켜 않습니다 무엇에 대한 불확실성과 97 00:04:43,990 --> 00:04:46,700 스스로 해결하고 싶습니다. 98 00:04:46,700 --> 00:04:51,760 >> 그래서 지난 번에 우리는 틀림없이 소개 더 복잡한 데이터 구조를 우리는 것보다 99 00:04:51,760 --> 00:04:53,300 지난 주에 본. 100 00:04:53,300 --> 00:04:56,550 우리는 꽤 배열을 사용하고 것 만약 행복으로 유용한 101 00:04:56,550 --> 00:04:58,160 단순한 데이터 구조. 102 00:04:58,160 --> 00:05:00,570 그럼 우리는이를 소개하는 물론 목록을 연결되어 있습니다. 103 00:05:00,570 --> 00:05:05,470 과에 대한 동기 중 하나 것이었다 이 데이터 구조를 도입? 104 00:05:05,470 --> 00:05:06,930 그래? 105 00:05:06,930 --> 00:05:07,250 그게 뭐야? 106 00:05:07,250 --> 00:05:08,080 >> 대상 : 동적 크기입니다. 107 00:05:08,080 --> 00:05:09,040 >> DAVID 마란 : 동적 크기입니다. 108 00:05:09,040 --> 00:05:11,890 배열에있는 반면에, 그래서 당신은한다 사전에 그 크기 때를 알아야 109 00:05:11,890 --> 00:05:12,740 당신은 그것을 할당합니다. 110 00:05:12,740 --> 00:05:14,380 연결 목록에서, 당신은하지 않습니다 것을 알고있다. 111 00:05:14,380 --> 00:05:17,610 당신이 더 일반적으로 그냥 malloc에​​, 또는 수 추가를 할당 112 00:05:17,610 --> 00:05:20,720 노드 말하자면, 언제나 당신 더 많은 데이터를 삽입 할. 113 00:05:20,720 --> 00:05:22,670 그리고 노드는 아무런 의미를 미리 없다. 114 00:05:22,670 --> 00:05:25,580 그냥 설명하는 일반적인 용어입니다 우리가 걸 컨테이너의 일종 115 00:05:25,580 --> 00:05:29,610 저장하기 위해 데이터 구조에 사용 이에 대한 관심의 일부 항목하는 116 00:05:29,610 --> 00:05:31,750 경우 정수가 될 일. 117 00:05:31,750 --> 00:05:33,160 >> 그러나 단점은 항상있다. 118 00:05:33,160 --> 00:05:38,070 그래서 우리는 데이터를 동적으로 크기를 얻을 구조, 그러나 우리가 어떤 가격을 지불합니까? 119 00:05:38,070 --> 00:05:40,040 연결리스트의 단점은 무엇입니까? 120 00:05:40,040 --> 00:05:41,006 그래? 121 00:05:41,006 --> 00:05:41,980 >> 관객은 : 더 많은 메모리가 필요합니다. 122 00:05:41,980 --> 00:05:44,240 >> DAVID 마란 : 그것은 더 필요 메모리, 정확히 어떻게? 123 00:05:44,240 --> 00:05:46,440 >> 대상 : [들림]. 124 00:05:46,440 --> 00:05:47,050 >> DAVID 마란 : 그렇습니다. 125 00:05:47,050 --> 00:05:50,460 그래서 지금 우리는 포인터를 차지했다 메모리를 추가 우리가 이전에 해당 126 00:05:50,460 --> 00:05:53,040 필요하지 않았다 때문에 장점 배열 물론, 그 127 00:05:53,040 --> 00:05:54,860 모든 연속 된 뒤의 뒷면에 백업하려면 어떤 128 00:05:54,860 --> 00:05:56,380 당신에게 무작위 액세스를 제공합니다. 129 00:05:56,380 --> 00:06:00,710 때문에 단지 대괄호를 사용하여 표기법, 또는 좀 더 기술적으로 포인터 130 00:06:00,710 --> 00:06:03,580 산술, 매우 간단뿐만 아니라, 당신은에 액세스 할 수 있습니다 131 00:06:03,580 --> 00:06:05,700 일정 시간의 요소. 132 00:06:05,700 --> 00:06:08,975 그리고 사실, 그 암시하는 일종의 우리와 함께 지불하는 또 다른 가격 133 00:06:08,975 --> 00:06:09,760 연결리스트. 134 00:06:09,760 --> 00:06:13,890 >> 무엇의 실행 시간에 발생 검색과 같은, 내가하고 싶은 경우 135 00:06:13,890 --> 00:06:17,270 어떤 가치와 내부를 찾을 수 연결리스트의? 136 00:06:17,270 --> 00:06:20,290 내 실행 시간은 어떻게되고 있습니까? 137 00:06:20,290 --> 00:06:21,560 N의 큰 O. 138 00:06:21,560 --> 00:06:24,060 그것은으로 분류 있다면 요? 139 00:06:24,060 --> 00:06:25,440 어떤 데이터 구조가 정렬 있다면 요? 140 00:06:25,440 --> 00:06:28,640 나는 큰 것보다 더 잘할 수 검색을위한 N의 O? 141 00:06:28,640 --> 00:06:31,700 아니, 있기 때문에 최악의 경우는 수도 잘 정렬 만 할 수 142 00:06:31,700 --> 00:06:32,950 당신은 큰 수 있습니다 찾고 있습니다. 143 00:06:32,950 --> 00:06:35,370 그것은 어떤 숫자 100이 될 수도 모든 할 일이 있습니다 144 00:06:35,370 --> 00:06:36,410 끝에 방법입니다. 145 00:06:36,410 --> 00:06:39,950 당신은 단지 링크에 액세스 할 수 있으므로 하여이 구현 목록 146 00:06:39,950 --> 00:06:42,690 첫 번째 노드의 방법, 당신은거야 운이 여전히 종류. 147 00:06:42,690 --> 00:06:47,450 당신은 모든 일을 통과해야합니다 먼저 찾기 위해 지속하는 148 00:06:47,450 --> 00:06:49,150 100처럼 그렇게 큰 값입니다. 149 00:06:49,150 --> 00:06:51,350 그건 경우 또는 결정 거기 있지도. 150 00:06:51,350 --> 00:06:55,960 >> 그래서 우리는 데이터에 어떤 알고리즘을 수행 할 수 없습니다 구조를 다음과 같이 보인다? 151 00:06:55,960 --> 00:06:59,460 우리는 이진 검색을 할 수 있기 때문에 이진 검색은 우리가 가진 것을 필요 152 00:06:59,460 --> 00:07:00,740 무작위 액세스 할 수 있습니다. 153 00:07:00,740 --> 00:07:04,500 우리는 단지 위치로 도약 할 수 따라하지 않고 위치 154 00:07:04,500 --> 00:07:07,080 양식이 빵 부스러기 이러한 모든 포인터. 155 00:07:07,080 --> 00:07:08,300 >> 이제 우리는 어떻게이를 구현 했습니까? 156 00:07:08,300 --> 00:07:12,830 글쎄, 우리가 여기 화면으로 이동 한 경우에, 우리는 신속하게이 데이터를 다시 구현할 수 있습니다 157 00:07:12,830 --> 00:07:13,440 구조 - 158 00:07:13,440 --> 00:07:15,670 내 글씨는 모두 아닙니다 여기에 좋은,하지만 우리가하려고합니다. 159 00:07:15,670 --> 00:07:22,030 그래서 typedef는 구조체, 그리고 무엇을했다 I 이 일을 여기 호출 할? 160 00:07:22,030 --> 00:07:22,960 노드입니다. 161 00:07:22,960 --> 00:07:24,580 그래서 우리가 시작 얻을 것이다. 162 00:07:24,580 --> 00:07:27,860 그리고 지금, 무엇의 내부에 있어야합니다 그 단독의 데이터 구조 163 00:07:27,860 --> 00:07:28,430 연결리스트? 164 00:07:28,430 --> 00:07:29,950 얼마나 많은 필드? 165 00:07:29,950 --> 00:07:30,450 >> 두 그럼. 166 00:07:30,450 --> 00:07:31,570 하나는 매우 쉽습니다. 167 00:07:31,570 --> 00:07:33,050 N 그렇게 INT. 168 00:07:33,050 --> 00:07:35,930 그리고 우리는 우리가 원하는 N 아무것도 호출 할 수 있습니다 우리가 있다면하지만 INT해야한다 169 00:07:35,930 --> 00:07:37,660 정수에 대한 연결리스트를 구현. 170 00:07:37,660 --> 00:07:41,920 지금 무슨 일이 두 번째 작업을 수행 필드 수 있나요? 171 00:07:41,920 --> 00:07:43,460 구조체 노드는 *. 172 00:07:43,460 --> 00:07:50,570 나는 구조체 노드 * 그리고 난 그렇게 생각하지 경우 또한 내가 원하는대로이 호출 할 수 있습니다, 173 00:07:50,570 --> 00:07:53,510 하지만 그냥 내가 전화 할게 명확하게 그 다음, 우리가 해왔으로. 174 00:07:53,510 --> 00:07:55,270 그리고 나는 중괄호를 닫 있습니다. 175 00:07:55,270 --> 00:08:00,700 >> 그리고 지금, 마지막으로, 여기 노드를 내려 놔. 176 00:08:00,700 --> 00:08:03,830 하지만이 선언 거라면 같이이다 노드는, 왜 그렇게되는 귀찮게 않았다 177 00:08:03,830 --> 00:08:07,320 여기에 구조체 선언의 자세한 노드 * 다음과 같은 반대 178 00:08:07,320 --> 00:08:09,210 다음 단지 노드 *에? 179 00:08:09,210 --> 00:08:09,904 그래? 180 00:08:09,904 --> 00:08:12,810 >> 대상 : [들림]. 181 00:08:12,810 --> 00:08:14,050 >> DAVID 마란 : 그렇습니다. 182 00:08:14,050 --> 00:08:14,530 정확히. 183 00:08:14,530 --> 00:08:18,320 C는 정말 당신을 그대로 소요하기 때문에 전용 노드의 정의를 본다 184 00:08:18,320 --> 00:08:21,230 여기까지하면, 당신은 할 수 없습니다 여기까지 참조하십시오. 185 00:08:21,230 --> 00:08:24,760 그래서 우리는 선제이 종류가 틀림없이 여기에 선언 186 00:08:24,760 --> 00:08:25,390 더 자세한. 187 00:08:25,390 --> 00:08:27,810 구조체 노드는 것을 의미 우리는 지금 액세스 할 수 있습니다 188 00:08:27,810 --> 00:08:29,760 데이터 구조의 내부. 189 00:08:29,760 --> 00:08:33,370 >> 그리고 옆으로,이 때문에 이제 좀 더 주관적인되고 190 00:08:33,370 --> 00:08:36,230 별이 기술적으로 여기에 갈 수 있습니다, 그것은 여기 갈 수는 있습니다 191 00:08:36,230 --> 00:08:37,179 심지어 중간에 이동합니다. 192 00:08:37,179 --> 00:08:39,890 우리는 당신을위한 스타일 가이드를 채용 한 물론, 퍼팅 대회 193 00:08:39,890 --> 00:08:42,299 데이터 바로 옆에 스타 유형,이 경우 어느 194 00:08:42,299 --> 00:08:43,460 구조체 노드가 될 것입니다. 195 00:08:43,460 --> 00:08:46,620 그러나 교과​​서를 많이 실현 온라인 참조, 당신은 참으로 수도 196 00:08:46,620 --> 00:08:48,450 다른 쪽을 참조하십시오. 197 00:08:48,450 --> 00:08:52,200 하지만 단지 그 사실 것 모두 실현 일을하고 당신은 단순히해야한다 198 00:08:52,200 --> 00:08:52,970 일관성. 199 00:08:52,970 --> 00:08:53,580 >> 좋아. 200 00:08:53,580 --> 00:08:55,630 따라서 우리의 선언이었습니다 구조체 노드의. 201 00:08:55,630 --> 00:08:59,430 하지만 우리는 더 많은 일을하기 시작 정교한 확인해보세요. 202 00:08:59,430 --> 00:09:03,410 예를 들어, 우리는 도입하기로 결정 해시 테이블 같은. 203 00:09:03,410 --> 00:09:08,160 그래서 여기에 크기가 n의 해시 테이블입니다 n으로 왼쪽 상단에 0부터 인덱스 204 00:09:08,160 --> 00:09:09,690 마이너스 바닥에 1 떠났다. 205 00:09:09,690 --> 00:09:11,640 이 해시 될 수 아무것도 테이블. 206 00:09:11,640 --> 00:09:15,340 그러나 우리는 일의 종류를 이야기 했는가 의 해시 테이블을 사용하는 방법에 대한? 207 00:09:15,340 --> 00:09:18,370 무엇을 저장? 208 00:09:18,370 --> 00:09:18,800 >> 이름. 209 00:09:18,800 --> 00:09:20,870 우리는 같은 이름을 할 수 우리는 지난 시간에했다. 210 00:09:20,870 --> 00:09:22,200 정말, 당신은 아무것도를 저장할 수 있습니다. 211 00:09:22,200 --> 00:09:24,640 그리고 우리는 다시이 표시됩니다 PHP와 자바 스크립트합니다. 212 00:09:24,640 --> 00:09:28,550 해시 테이블은 스위스의 좋은 일종이다 당신이 저장할 수있는 군용 칼 213 00:09:28,550 --> 00:09:33,690 거의 당신이 내부에 원하는대로 값으로 키를 연결하여 그것. 214 00:09:33,690 --> 00:09:34,770 값이 키를 사용합니다. 215 00:09:34,770 --> 00:09:37,800 >> 이제이 간단한 경우에, 우리의 키는 단지 숫자입니다. 216 00:09:37,800 --> 00:09:40,380 우리는 해시를 구현하고 배열 표. 217 00:09:40,380 --> 00:09:43,500 그리고 키 0이고, 1, 2, 등등. 218 00:09:43,500 --> 00:09:47,200 그래서 우리는, 인간으로, 마지막 결정 당신은 우리가 있다면 무엇을 알고 주하는 219 00:09:47,200 --> 00:09:50,410 저장소 이름에 가고,하자 그냥 임의로하지만, 꽤 합리적으로, 220 00:09:50,410 --> 00:09:54,680 한다고 가정 앨리스, 이름, 그냥 0으로 인덱스됩니다. 221 00:09:54,680 --> 00:09:58,030 와 밥, B 이름은 색인화 할 1에, 등등. 222 00:09:58,030 --> 00:10:02,490 그래서 우리는, 입력 간의 매핑을했다 이는 문자열이며, 해시 223 00:10:02,490 --> 00:10:04,560 숫자 위치. 224 00:10:04,560 --> 00:10:07,740 >> 그래서 그 과정은 일반적으로 알려져 있습니다 해쉬 함수, 당신은 진정 수 225 00:10:07,740 --> 00:10:09,130 그 코드를 구현합니다. 226 00:10:09,130 --> 00:10:12,080 내가 해시 함수를 구현하려는 경우 그것은 정확히 우리가한다 227 00:10:12,080 --> 00:10:17,070 바로 지난 시간부터 설명, 나는 수도 로받는 함수를 선언 228 00:10:17,070 --> 00:10:18,330 예를 들어 입력 - 229 00:10:18,330 --> 00:10:22,190 및하자이에이 작업을 수행 여기에 화면을 표시합니다. 230 00:10:22,190 --> 00:10:26,180 내가 해시를 구현하려는 경우 기능은 내가 말할 수 있습니다 231 00:10:26,180 --> 00:10:27,410 이런 식으로 뭔가. 232 00:10:27,410 --> 00:10:29,030 >> 그것은 int를 반환하는거야. 233 00:10:29,030 --> 00:10:33,600 그것은 해시 호출 할 것, 그리고의 인수로 받아 들일 것 234 00:10:33,600 --> 00:10:38,920 문자열, 또는 우리는 이제 더 적절한 수 있습니다 와 char *로 말을, 우리는 그것의 전화 할께. 235 00:10:38,920 --> 00:10:43,840 그리고이 모든 기능은 할 수있다 궁극적으로, int를 반환합니다. 236 00:10:43,840 --> 00:10:45,990 지금, 그것은 어떻게합니까 그 수도 그렇게 분명하지. 237 00:10:45,990 --> 00:10:49,510 어떤없이 구현하는거야 지금은 오류 검사의 형태. 238 00:10:49,510 --> 00:10:55,740 그냥 맹목적으로 말할거야 반환 의 브라켓 0에서 무엇을 뺀, 239 00:10:55,740 --> 00:10:58,850 하자 자본 세미콜론을 말한다. 240 00:10:58,850 --> 00:10:59,960 >> 완전히 깨진. 241 00:10:59,960 --> 00:11:02,620 그것은 완벽 하진 때문에 하나의 null이 무슨 경우? 242 00:11:02,620 --> 00:11:04,000 나쁜 일이 일어날 것입니다. 243 00:11:04,000 --> 00:11:07,940 두, 어떤 경우에는 이것의 첫 번째 문자 이름은 대문자 아닌가요? 244 00:11:07,940 --> 00:11:09,860 설정하지 않을 걸 밖으로 잘 하나. 245 00:11:09,860 --> 00:11:11,970 그것은 소문자 수 있습니다 또는 전혀 문자. 246 00:11:11,970 --> 00:11:15,520 여기에 개선 그래서 완전히 방 그러나 이것은 기본적인 생각이다. 247 00:11:15,520 --> 00:11:19,010 >> 우리는 구두로 지난 주에 설명한 것을 앨리스 매핑 단지 과정 248 00:11:19,010 --> 00:11:23,360 1-0와 밥이 표현 될 수있다 확실히 더 많은 공식을 통해 (formulaically) C로 249 00:11:23,360 --> 00:11:24,320 여기에 작동합니다. 250 00:11:24,320 --> 00:11:28,630 다시 해시 호출로 문자열을 입력 한 다음 어떻게 든 무언가를 251 00:11:28,630 --> 00:11:31,020 출력을 생성하기 위해 해당 입력으로. 252 00:11:31,020 --> 00:11:34,130 아닌 우리의 블랙 박스 설명과는 달리 우리는 오랫동안 수행했는지. 253 00:11:34,130 --> 00:11:36,550 나는이있을 수 있습니다 방법을 몰라 후드 아래 작업. 254 00:11:36,550 --> 00:11:40,120 >> 문제 세트 6 문제 중 하나 당신이 결정하는 무엇 255 00:11:40,120 --> 00:11:41,920 귀하의 해시 함수가 될 것인가? 256 00:11:41,920 --> 00:11:45,760 그 블랙의 안쪽에 할 무슨 상자, ​​그리고 아마도, 그것은있을거야 257 00:11:45,760 --> 00:11:50,380 좀 더 이것보다 흥미와 오류 확실히 더 많은 경향이 258 00:11:50,380 --> 00:11:53,180 이 특별한 이상 검사 구현. 259 00:11:53,180 --> 00:11:54,580 >> 그러나 문제는 바로 발생할 수 있습니다? 260 00:11:54,580 --> 00:11:57,760 우리는 이와 같은 데이터 구조가있는 경우 하나 문제 중 하나가 무엇입니까 261 00:11:57,760 --> 00:12:01,600 당신은 삽입 할 경우 시간이 지남에 실행할 수 있습니다 에 더 많은 이름 262 00:12:01,600 --> 00:12:02,880 해시 테이블? 263 00:12:02,880 --> 00:12:04,630 당신이 바로 충돌을 얻는가? 264 00:12:04,630 --> 00:12:07,560 당신은 무엇을 앨리스와 아론을 가지고있는 경우 이름이 일어난 이명 265 00:12:07,560 --> 00:12:08,190 로 시작하는? 266 00:12:08,190 --> 00:12:11,660 그건 어디 당신은 질문을 구걸 두 번째 같은 이름을 넣어? 267 00:12:11,660 --> 00:12:15,050 >> 글쎄, 당신은 순진 그냥 둘 수 밥이 속한 곳,하지만 밥은 268 00:12:15,050 --> 00:12:17,300 당신이하려고하면 종류의 나사 다음에 자신​​의 이름을 삽입하고 269 00:12:17,300 --> 00:12:18,240 그의 여지가 없습니다. 270 00:12:18,240 --> 00:12:21,400 그래서 당신은 찰리가 밥을 넣어 수 있습니다 그리고 당신이 매우 빠르게 상상할 수 271 00:12:21,400 --> 00:12:23,020 혼란의 비트에 이양. 272 00:12:23,020 --> 00:12:25,600 결국 선형 일 경우 단지 전체를 검색해야 273 00:12:25,600 --> 00:12:28,190 앨리스 나 밥을 찾고 나 아론이나 찰리. 274 00:12:28,190 --> 00:12:33,230 >> 그래서 그 대신 우리는 대신에, 제안 선형 열린 공간 프로빙 275 00:12:33,230 --> 00:12:36,450 그리고 우리는 거기에 이름을 쿵쾅 거리고 애호가 방법을 제안 하였다. 276 00:12:36,450 --> 00:12:41,740 아직도 구현 된 해시 테이블 인덱스 배열,하지만 데이터 유형 277 00:12:41,740 --> 00:12:44,500 이러한 지표는 이제 포인터되었습니다. 278 00:12:44,500 --> 00:12:47,360 어떤 포인터? 279 00:12:47,360 --> 00:12:48,730 연결리스트에 대한 포인터. 280 00:12:48,730 --> 00:12:53,330 >> 때문에 연결리스트는 그 리콜 정말 그냥 노드에 대한 포인터, 그리고 281 00:12:53,330 --> 00:12:57,110 노드는 다음 필드 및 해당 노드가 다음 필드를 가지고, 등등. 282 00:12:57,110 --> 00:13:00,690 그래서 지금에이 배열을 생각할 수 해시 테이블로의 왼쪽 283 00:13:00,690 --> 00:13:01,820 연결리스트로 이어지는. 284 00:13:01,820 --> 00:13:07,000 당신이 얻을 경우의 장점은 앨리스와 아론 사이의 충돌, 285 00:13:07,000 --> 00:13:09,300 당신은 무엇을해야합니까 두 번째 같은 사람? 286 00:13:09,300 --> 00:13:14,150 당신은 그를 연결하거나 그녀 끝 또는 시작 287 00:13:14,150 --> 00:13:15,490 그 연결리스트의. 288 00:13:15,490 --> 00:13:17,340 >> 실제로 통해 단지 국수하자 그 잠깐합니다. 289 00:13:17,340 --> 00:13:18,640 여기서 가장 적합한을 만들 것? 290 00:13:18,640 --> 00:13:22,060 나는 앨리스를 삽입하고 그녀가 바라 끝나는 경우 첫 번째 위치는, 나는 시도 291 00:13:22,060 --> 00:13:25,310 아론의 이름을 삽입하고있다 분명 충돌이 나는 넣어야한다 292 00:13:25,310 --> 00:13:27,400 그 시작 부분에 연결리스트의? 293 00:13:27,400 --> 00:13:30,944 즉, 첫 위치에서의 또는 끝? 294 00:13:30,944 --> 00:13:31,440 >> 대상 : [들림]. 295 00:13:31,440 --> 00:13:31,990 >> DAVID 마란 : OK. 296 00:13:31,990 --> 00:13:32,490 나는 처음 들었다. 297 00:13:32,490 --> 00:13:33,903 왜 처음에? 298 00:13:33,903 --> 00:13:34,750 >> 대상 : [들림]. 299 00:13:34,750 --> 00:13:34,940 >> DAVID 마란 : OK. 300 00:13:34,940 --> 00:13:36,520 그것은 알파벳의, 좋은 데요 있도록. 301 00:13:36,520 --> 00:13:37,330 그 좋은 재산입니다. 302 00:13:37,330 --> 00:13:39,335 그것은 나에게 잠재적으로 시간을 절약 할 수 있습니다. 303 00:13:39,335 --> 00:13:43,290 그것은 나를 이진 검색을 수행하자,하지만하지 않습니다 I 적어도 탈출 할 수있을 것 304 00:13:43,290 --> 00:13:47,340 내가 알게되면 루프, 음, 내가 길이야 지난이었다 아론이 될 것입니다 305 00:13:47,340 --> 00:13:48,310 연결된 목록을 정렬. 306 00:13:48,310 --> 00:13:50,360 내가 찾고 내 시간을 낭비 할 필요가 없습니다 끝까지. 307 00:13:50,360 --> 00:13:51,530 그래서 합리적이다. 308 00:13:51,530 --> 00:13:54,710 왜 다른 당신은 삽입 할 수 있습니다 에서 충돌하는 이름 309 00:13:54,710 --> 00:13:56,660 목록의 시작? 310 00:13:56,660 --> 00:13:57,397 그게 뭐야? 311 00:13:57,397 --> 00:13:58,680 >> 대상 : [들림]. 312 00:13:58,680 --> 00:14:00,820 >> DAVID 마란 : 그것은 시간이 오래 걸릴 수 있습니다 목록의 끝에 얻을 수 있습니다. 313 00:14:00,820 --> 00:14:02,490 그리고 사실, 더 길고 더. 314 00:14:02,490 --> 00:14:04,920 당신이 삽입 이상의 이름이 , 더 이상 그와 함께 시작 315 00:14:04,920 --> 00:14:06,280 체인을 얻을 것입니다. 316 00:14:06,280 --> 00:14:07,890 더 이상 연결하는 리스트 얻을 것입니다. 317 00:14:07,890 --> 00:14:09,420 그래서 당신은 정말 그냥있어 당신의 시간을 낭비. 318 00:14:09,420 --> 00:14:14,070 어쩌면 당신은 유지하는 게 좋겠어 상수 삽입 시간, 1 큰 O, 319 00:14:14,070 --> 00:14:18,470 항상 충돌하는 이름으로 바꾸어 연결리스트의 시작, 320 00:14:18,470 --> 00:14:21,230 그리고 많이 걱정하지 정렬에 대해. 321 00:14:21,230 --> 00:14:22,600 >> 가장 좋은 대답은 무엇입니까? 322 00:14:22,600 --> 00:14:23,320 그것은 명확하지 않다. 323 00:14:23,320 --> 00:14:26,140 그것은 종류에 따라 다릅니다 어떤 분포 패턴이 무엇이며, 324 00:14:26,140 --> 00:14:27,850 이름을 당신이 삽입됩니다. 325 00:14:27,850 --> 00:14:29,430 그것은 반드시이 아니다 확실한 대답. 326 00:14:29,430 --> 00:14:33,100 그러나 여기에 또있다 디자인 기회를 제공합니다. 327 00:14:33,100 --> 00:14:37,220 >> 그래서 우리는이 일에보고하는 정말 다른 큰 기회입니다 328 00:14:37,220 --> 00:14:38,180 P 세트 6. 329 00:14:38,180 --> 00:14:41,770 그리고 당신이 이미하지 않은 경우, 실현 해시 이들 모두에 Zamyla 다이빙, 330 00:14:41,770 --> 00:14:43,260 테이블과 더 자세히 시도. 331 00:14:43,260 --> 00:14:45,630 그리고 비디오 연습은 P 세트 사양에 포함. 332 00:14:45,630 --> 00:14:46,590 이 트라이이었다 - 333 00:14:46,590 --> 00:14:51,670 T-R-I-E. 과에 대한 흥미 것이었다 이것은 실행 시간이었다 334 00:14:51,670 --> 00:14:59,510 맥스웰 같은 이름을 검색 중 마지막으로, 무슨 큰 O인가? 335 00:14:59,510 --> 00:15:01,040 그게 뭐야? 336 00:15:01,040 --> 00:15:01,920 >> 대상 : 문자의 수입니다. 337 00:15:01,920 --> 00:15:02,550 >> DAVID 마란 : 문자의 수. 338 00:15:02,550 --> 00:15:03,210 나는 두 가지를 들었다. 339 00:15:03,210 --> 00:15:04,630 문자와 일정 시간의 수. 340 00:15:04,630 --> 00:15:05,540 그럼 그 첫 번째로 가자. 341 00:15:05,540 --> 00:15:06,410 문자의 수입니다. 342 00:15:06,410 --> 00:15:10,195 음,이 데이터 구조, 리콜이며, 나무, 가족 나무의 각을 좋아 343 00:15:10,195 --> 00:15:12,860 그 노드는 배열로 구성되어 있습니다. 344 00:15:12,860 --> 00:15:16,300 그리고 그 배열에 대한 포인터 같은 다른 노드 또는 다른 345 00:15:16,300 --> 00:15:17,670 트리에서 배열. 346 00:15:17,670 --> 00:15:22,890 >> 우리는 확인하고 싶었 그래서 경우 맥스웰이 여기에 있는지, 내가 갈 수도 있습니다 347 00:15:22,890 --> 00:15:26,890 의 맨 위에있는 첫 번째 배열에 나무, 소위 루트의 상단 348 00:15:26,890 --> 00:15:30,521 다음 트라이, 및 M 포인터를 따라 그 다음, 포인터, X, 349 00:15:30,521 --> 00:15:31,710 W, E, L, L. 350 00:15:31,710 --> 00:15:34,910 그리고 나서, 일부 특수 기호를 볼 때 삼각형 여기에 표시된. 351 00:15:34,910 --> 00:15:38,480 코드에서 당신은 우리가 제안 볼 거 야 당신 그냥 예라고, BOOL로 구현 352 00:15:38,480 --> 00:15:40,540 또는 아니, 단어는 여기에서 멈 춥니 다. 353 00:15:40,540 --> 00:15:45,270 >> 음, 일단 우리가 M--X-W-E-L-L에 갔어요, 아마 일곱 느낌 354 00:15:45,270 --> 00:15:48,910 여덟 우리는 지난 1, 여덟 가면 맥스웰를 찾는 단계. 355 00:15:48,910 --> 00:15:53,050 나의이 K. 부르게하지만, 마지막을 기억 시간은, 내가 만약 거기에 있다고 주장 356 00:15:53,050 --> 00:15:57,540 에 현실적으로 최대 길이 단어, 40 일부 - 이상한 문자처럼, 357 00:15:57,540 --> 00:16:00,810 최대 길이는 의미 상수 값. 358 00:16:00,810 --> 00:16:05,770 그래서 정말, 그래, 그것은 기술적으로 큰 O의 하지만, 8, 7, 또는 K. 정말 큰 O의 359 00:16:05,770 --> 00:16:09,420 무엇에 유한 캡이 있다면 K가 될 수는 상수이다. 360 00:16:09,420 --> 00:16:12,080 그리고 그것은 1 큰 O는시의 하루의 끝. 361 00:16:12,080 --> 00:16:13,040 >> 아니 현실 세계합니다. 362 00:16:13,040 --> 00:16:15,960 당신은 실제로 시청을 시작하지 않는 경우 프로그램의 실행으로 당신의 시계. 363 00:16:15,960 --> 00:16:20,690 그것은 절대적으로 조금 될 것 정말 일정보다 느리게 364 00:16:20,690 --> 00:16:21,840 한 단계와 시간입니다. 365 00:16:21,840 --> 00:16:25,540 그것은 7 ~ 8 단계가 될 것 하지만 여전히 훨씬, 훨씬 더의 366 00:16:25,540 --> 00:16:30,080 그 N의 큰 O와 같은 알고리즘보다 에 무엇이의 크기에 따라 달라집니다 367 00:16:30,080 --> 00:16:31,220 데이터 구조. 368 00:16:31,220 --> 00:16:34,970 >> 여기에 거꾸로 우리가 삽입 할 수 있습니다 알 이에 백만 이상의 이름 369 00:16:34,970 --> 00:16:38,170 데이터 구조,하지만 어떻게 더 많은 단계 그것을 찾기 위해 우리를 걸릴 것입니다 370 00:16:38,170 --> 00:16:40,480 이 경우 맥스웰? 371 00:16:40,480 --> 00:16:40,780 없음. 372 00:16:40,780 --> 00:16:41,820 그가 영향을받지 있습니다. 373 00:16:41,820 --> 00:16:45,480 그리고 지금까지, 우리가 본 적이 생각하지 않는다 데이터 구조 또는의 예 374 00:16:45,480 --> 00:16:48,560 완전히이었다 알고리즘 외부의 영향을받지 375 00:16:48,560 --> 00:16:50,040 그런 행동. 376 00:16:50,040 --> 00:16:51,160 하지만이 놀라운 할 수 없습니다. 377 00:16:51,160 --> 00:16:52,900 이 유일한 해결책이 될 수 없습니다 P-세트에 대한 378 00:16:52,900 --> 00:16:53,570 >> 그리고 그것은 아니에요. 379 00:16:53,570 --> 00:16:55,980 이 데이터를 필요는 없습니다 구조는 당신이 몰리는한다 380 00:16:55,980 --> 00:16:58,220 때문에 해시 테이블 같은 단점. 381 00:16:58,220 --> 00:17:00,500 여기에 지불하는 가격은 무엇입니까? 382 00:17:00,500 --> 00:17:00,940 메모리. 383 00:17:00,940 --> 00:17:02,890 내 말은,이 끔찍 메모리의 양입니다. 384 00:17:02,890 --> 00:17:05,569 그리고 당신은 확실히 여기에서 볼 수 없기 때문에 이 그림의 저자 385 00:17:05,569 --> 00:17:09,420 물론, 배열을 모두 절단 우리는의를 많이 시청하지 않는 386 00:17:09,420 --> 00:17:12,700 B의와 C의와 Q의와 Y의 와 Z의 이러한 배열합니다. 387 00:17:12,700 --> 00:17:13,630 하지만 그들은있어. 388 00:17:13,630 --> 00:17:17,660 >> 이러한 노드 각각은 전체 배열 일부 26 바이트 이상, 각각의 389 00:17:17,660 --> 00:17:19,170 이는 문자를 나타냅니다. 390 00:17:19,170 --> 00:17:22,920 우리가 지원할 수 있도록 우리의 경우 27 일 문제 세트 아포스트로피. 391 00:17:22,920 --> 00:17:27,030 이 데이터 구조는 정말 그래서, 정말 밀도와 넓은. 392 00:17:27,030 --> 00:17:30,880 그리고 혼자 둔화 끝날 수도 물건은 아래로, 또는 적어도 당신을 비용 393 00:17:30,880 --> 00:17:32,240 더 많은 공간. 394 00:17:32,240 --> 00:17:34,020 그러나 다시, 우리는 그릴 수 있습니다 여기에 비교. 395 00:17:34,020 --> 00:17:39,190 >> 다시 잠시 기억, 우리는 많은 것을 달성 정렬에 더 많은 흥미로운 상영 시간 396 00:17:39,190 --> 00:17:42,880 우리는 정렬 병합,하지만 가격을 사용하는 경우 우리는 병합 n을 달성 N 로그온 할 때 지불 397 00:17:42,880 --> 00:17:46,930 종류는 우리가 지출해야 무엇보다 자원? 398 00:17:46,930 --> 00:17:47,690 더 많은 공간. 399 00:17:47,690 --> 00:17:50,530 우리는에 보조 배열을 필요로 처럼 사람들을 복사 400 00:17:50,530 --> 00:17:51,620 우리는 무대에서 여기 않았다. 401 00:17:51,620 --> 00:17:55,880 그래서 다시, 명확한 승자, 하지만 단지 주관적 디자인 402 00:17:55,880 --> 00:17:57,710 결정을 할 수 있습니다. 403 00:17:57,710 --> 00:17:58,060 >> 좋아. 404 00:17:58,060 --> 00:17:59,130 어떻게 이것에 대해? 405 00:17:59,130 --> 00:18:02,050 누구나하는 D-홀을 인식? 406 00:18:02,050 --> 00:18:02,440 확인을 클릭합니다. 407 00:18:02,440 --> 00:18:03,170 그래서 우리 셋 않습니다. 408 00:18:03,170 --> 00:18:03,750 메이 하우스. 409 00:18:03,750 --> 00:18:05,070 그래서 이것은 메이의 식사입니다. 410 00:18:05,070 --> 00:18:09,650 나는 모든 식당 홀 가지고있을거야 이와 같은 트레이의 스택. 411 00:18:09,650 --> 00:18:11,950 그리고 실제로 대표 우리가했습니다 뭔가 412 00:18:11,950 --> 00:18:13,050 분명히 이미 본. 413 00:18:13,050 --> 00:18:14,850 우리는 문자 그대로 스택을했다. 414 00:18:14,850 --> 00:18:18,970 귀하의 측면에서 그리고 스택, 데이터가 어디로가는 컴퓨터의 메모리이며, 415 00:18:18,970 --> 00:18:20,460 함수가 호출되는 동안. 416 00:18:20,460 --> 00:18:23,410 >> 예를 들어, 사물의 어떤 종류의 이동 에 대하여 스택에 417 00:18:23,410 --> 00:18:27,420 우리가 토론 한 메모리 레이아웃 지난 주에? 418 00:18:27,420 --> 00:18:28,736 그게 뭐야? 419 00:18:28,736 --> 00:18:29,670 >> 대상 : 함수 호출. 420 00:18:29,670 --> 00:18:30,260 >> DAVID 마란 : 미안 해요. 421 00:18:30,260 --> 00:18:31,210 >> 대상 : 함수 호출. 422 00:18:31,210 --> 00:18:33,590 >> DAVID 마란 : 함수를 호출하지만, 특히, 각각의 안쪽은 무엇입니까 423 00:18:33,590 --> 00:18:35,340 그 프레임? 424 00:18:35,340 --> 00:18:37,220 사물의 어떤 종류의? 425 00:18:37,220 --> 00:18:37,460 그래. 426 00:18:37,460 --> 00:18:38,500 지역 변수 때문에. 427 00:18:38,500 --> 00:18:43,080 언제든지 우리는 몇 가지 로컬 스토리지가 필요 인수와 같은, 또는 INT I, 또는 INT 428 00:18:43,080 --> 00:18:45,940 온도, 또는 어떤 지역 변수는, 우리는 있었어요된다 429 00:18:45,940 --> 00:18:47,210 스택에 그 퍼팅. 430 00:18:47,210 --> 00:18:49,610 그리고 우리는 그것을 호출 스택 때문에 그 레이어 아이디어. 431 00:18:49,610 --> 00:18:52,940 현실과 일치, 그냥 업 그 개념. 432 00:18:52,940 --> 00:18:56,650 >> 그러나 그것은 밝혀 스택도 할 수있는 데이터 구조로 볼 수, 433 00:18:56,650 --> 00:19:00,110 배열에 대안 대안 링크 된 목록에 추가합니다. 434 00:19:00,110 --> 00:19:02,770 개념적으로 더 흥미로운 여전히 수 435 00:19:02,770 --> 00:19:06,030 그 중 하나를 사용하여 구현 것들,하지만 다른 종류의의 436 00:19:06,030 --> 00:19:09,140 데이터 구조는 정말 지원 두 작업. 437 00:19:09,140 --> 00:19:11,000 하지만 당신은 애호가에 추가 할 수 있습니다 이보다 기능을 제공합니다. 438 00:19:11,000 --> 00:19:12,180 그러나 이러한 기본이다 - 439 00:19:12,180 --> 00:19:13,510 누르고 팝업. 440 00:19:13,510 --> 00:19:19,240 >> 그리고 스택 아이디어는 그 경우 I 이나 애넌 버그없이 여기있다 441 00:19:19,240 --> 00:19:22,880 바로 옆에서 트레이를 알고 거기에 번호 9. 442 00:19:22,880 --> 00:19:23,870 그래서 그냥 INT. 443 00:19:23,870 --> 00:19:26,990 그리고 데이터에이를 밀어하려면 현재 비어있는 구조. 444 00:19:26,990 --> 00:19:28,790 이에게 스택의 하단을 고려하십시오. 445 00:19:28,790 --> 00:19:33,150 나는에이 숫자 9를 밀어 것 스택, 지금 바로있다. 446 00:19:33,150 --> 00:19:36,040 >> 그러나 스택에 대한 흥미로운 것은 지금 밀어 원하는 경우에, 그것은이다 447 00:19:36,040 --> 00:19:40,210 다른 값처럼 17, 나는 밀어 스택에이, 내가 할거야 448 00:19:40,210 --> 00:19:43,290 난 그냥려고 만 직관적 인 것 바로 그것을 넣어 어디 인간 449 00:19:43,290 --> 00:19:45,180 상단에 넣어하는 경향이 될 것이다. 450 00:19:45,180 --> 00:19:48,850 그러나 지금은 흥미 , 내가 어떻게 9시 어떻게해야합니까 무엇입니까? 451 00:19:48,850 --> 00:19:50,670 당신이 알고, 내가 어떤 노력없이하지 않습니다. 452 00:19:50,670 --> 00:19:54,070 >> 그래서에 대한 흥미 스택, 그 디자인입니다 453 00:19:54,070 --> 00:19:56,330 그것은 LIFO 데이터 구조입니다. 454 00:19:56,330 --> 00:19:59,680 기술의 어리석은 방법 마지막, 첫 번째가 부족합니다. 455 00:19:59,680 --> 00:20:03,280 그래서 마지막 숫자 이 시간에 17이었다. 456 00:20:03,280 --> 00:20:07,540 내가 뭔가를 나타 싶은 경우 스택, 그것은 단지 17가 될 수 있습니다. 457 00:20:07,540 --> 00:20:11,890 정도의 필수 순서가있다 여기에 작업 위치를 마지막 항목 458 00:20:11,890 --> 00:20:14,260 에서가 처음으로 나온 수있다. 459 00:20:14,260 --> 00:20:16,440 따라서 약어, LIFO. 460 00:20:16,440 --> 00:20:19,160 >> 그럼 왜이 유용 할 수 있습니다? 461 00:20:19,160 --> 00:20:22,690 자신의 상황입니다 당신은 거라고하는 이 같은 데이터 구조를 원하는? 462 00:20:22,690 --> 00:20:24,810 음, 확실히 도움이되었습니다 컴퓨터의 내부. 463 00:20:24,810 --> 00:20:29,050 따라서 운영 체제는 명확하게이 기능을 사용 스택 데이터 구조의 일종. 464 00:20:29,050 --> 00:20:32,800 우리는 또한 같은 생각을 볼 수 있습니다 웹 페이지에 관해서. 465 00:20:32,800 --> 00:20:35,890 이번 주 다음 주에 따라서 그리고 저쪽에, 그리고 당신은 웹을 구현하기 시작할 때 466 00:20:35,890 --> 00:20:39,490 언어 페이지는 HTML, 당신이 할 수있는 전화 실제로 같은 데이터 구조를 사용하여 467 00:20:39,490 --> 00:20:42,690 이 결정하면 페이지 올바르게 포맷됩니다. 468 00:20:42,690 --> 00:20:47,170 우리가 볼 수 있기 때문에 모든 웹 페이지는 다음과 계층 구조의 정렬, 들여 쓰기 469 00:20:47,170 --> 00:20:52,030 , 하루의 끝에, 될 것 후드 아래 트리 구조. 470 00:20:52,030 --> 00:20:53,620 단지 약간의 해당에 이렇게 더. 471 00:20:53,620 --> 00:20:56,560 >> 하지만 지금의이에 대한 제안하자 순간, 우리는에 대해 어떻게 갈 수 472 00:20:56,560 --> 00:20:58,830 스택이 무엇입니까? 대표 473 00:20:58,830 --> 00:21:03,370 우리가 구현하는 나 제안하자 다음과 같은 코드로 스택입니다. 474 00:21:03,370 --> 00:21:07,990 그래서 스택은 내부에해야 할 것입니다 두 가지, 배열, 전화 트레이, 475 00:21:07,990 --> 00:21:09,510 단지 데모와 일치해야합니다. 476 00:21:09,510 --> 00:21:12,660 그리고 그 배열의 각 항목 int 형이 될 것입니다. 477 00:21:12,660 --> 00:21:14,740 그리고 용량은 아마도 무엇인가? 478 00:21:14,740 --> 00:21:18,796 내가 작성하지했기 때문에 여기에 전체 정의. 479 00:21:18,796 --> 00:21:21,535 >> 아마 최대의 배열의 크기입니다. 480 00:21:21,535 --> 00:21:25,150 그리고 그것은 아마 샤프로 선언 된 일부 파일의 맨 위에 정의 481 00:21:25,150 --> 00:21:28,450 상수의 종류는 암시 단순한 대문자. 482 00:21:28,450 --> 00:21:32,250 그래서 어딘가에 용량이 정의되어 가능한 최대 크기. 483 00:21:32,250 --> 00:21:35,590 한편, 내부 데이터 구조의 스택으로 알려진이됩니다 484 00:21:35,590 --> 00:21:38,630 단지 알려진 정수 단순히 크​​기. 485 00:21:38,630 --> 00:21:43,400 >> 지금이 나타내는 있었다면 그림으로,의를 가정하자 그이 486 00:21:43,400 --> 00:21:48,070 전체 블랙 박스 내 스택을 나타냅니다. 487 00:21:48,070 --> 00:21:50,070 그것의 내부는 두 변수이다. 488 00:21:50,070 --> 00:21:54,780 그래서 난을 그릴거야 크기 첫 번째. 489 00:21:54,780 --> 00:21:57,420 그리고 난거야 두 번째 배열로 그립니다. 490 00:21:57,420 --> 00:22:01,060 >> 그러나 다만 상황이 질서 유지 일반적으로 내가 좋아하는 배열을 그릴 것 491 00:22:01,060 --> 00:22:04,910 좋은이 있지만, 그것의 종류 우리는 현실을 일치하는 경우, 또는 492 00:22:04,910 --> 00:22:06,230 정신 모델을 일치합니다. 493 00:22:06,230 --> 00:22:12,880 그럼 내가 대신 배열을 그려 보자 수직, 이는 그냥 또 다시, 494 00:22:12,880 --> 00:22:13,840 작가의 연주. 495 00:22:13,840 --> 00:22:16,610 정말 무엇이 중요하지 않습니다 후드 아래에있다. 496 00:22:16,610 --> 00:22:20,350 그리고 우리는 기본적으로 그렇게 말할 것 용량은 세 가지가 될 것입니다. 497 00:22:20,350 --> 00:22:23,480 그래서이 위치를 0이 될 것입니다 위치 1이 될 것입니다 498 00:22:23,480 --> 00:22:25,740 위치 2가됩니다. 499 00:22:25,740 --> 00:22:29,330 >> 나는 스트레스 공을 매수하는 경우 것 누군가가 와서 실행하려면 500 00:22:29,330 --> 00:22:30,870 잠시 여기를 탑승? 501 00:22:30,870 --> 00:22:31,960 OK, 먼저 손을 보았다. 502 00:22:31,960 --> 00:22:33,950 올라 와요. 503 00:22:33,950 --> 00:22:36,500 좋아. 504 00:22:36,500 --> 00:22:38,760 그래서 나는 스티븐 믿습니다. 505 00:22:38,760 --> 00:22:40,035 올라 와요. 506 00:22:40,035 --> 00:22:40,770 좋아. 507 00:22:40,770 --> 00:22:46,760 >> 하지만 지금 우리는 초기에 감아한다고 가정 세계의 상태를 어디에 508 00:22:46,760 --> 00:22:52,180 그냥 스택을 선언하고의이 용량이 세 가지가 될 것. 509 00:22:52,180 --> 00:22:54,470 그러나 크기는 아직 결정되지 않았습니다. 510 00:22:54,470 --> 00:22:56,100 트레이는 아직 결정되지 않았습니다. 511 00:22:56,100 --> 00:22:57,300 먼저 몇 가지 질문 때문에. 512 00:22:57,300 --> 00:23:01,310 그리고 내가 당신에게 마이크를 줄 수 있도록 당신이 할 수 있도록 이 더 적극적으로 참여. 513 00:23:01,310 --> 00:23:05,190 >> 그래서 크기의 내부는이 순간 무엇인가 시간에 내가했던 모든 경우 514 00:23:05,190 --> 00:23:09,340 와 스택을 선언 한 줄의 코드? 515 00:23:09,340 --> 00:23:10,100 >> STEVEN : 많이하지 않습니다. 516 00:23:10,100 --> 00:23:12,080 >> DAVID 마란 : OK,별로. 517 00:23:12,080 --> 00:23:14,410 우리는 크기 안에 무엇이 알고 우리는 안에 무엇이 알고 518 00:23:14,410 --> 00:23:16,330 여기에이 배​​열의? 519 00:23:16,330 --> 00:23:18,630 >> STEVEN : 그냥 임의의 코드를, 오른쪽? 520 00:23:18,630 --> 00:23:20,220 그냥 - 521 00:23:20,220 --> 00:23:23,230 >> DAVID 마란은 : 네, 갈거야 그 코드를 호출하지만 임의 - 522 00:23:23,230 --> 00:23:23,820 >> STEVEN : 확인해보세요. 523 00:23:23,820 --> 00:23:28,290 >> DAVID 마란 : 무작위 같은 것들 524 00:23:28,290 --> 00:23:28,870 >> STEVEN : 비트. 525 00:23:28,870 --> 00:23:29,530 >> DAVID 마란 : 비트, 오른쪽? 526 00:23:29,530 --> 00:23:31,190 쓰레기 값이 그래서, 오른쪽? 527 00:23:31,190 --> 00:23:33,470 따라서 0과 1의 순열. 528 00:23:33,470 --> 00:23:35,920 이전 용도의 잔존물 이 메모리의. 529 00:23:35,920 --> 00:23:38,150 그리고 우리는 정말 모르겠어요 무슨 값 그래서 우리는 일반적으로 그들을 잡아되어 530 00:23:38,150 --> 00:23:38,930 물음표. 531 00:23:38,930 --> 00:23:41,990 >> 우리는 아마도거야 그래서 우선 여기에서 할 것 - 532 00:23:41,990 --> 00:23:46,630 나 내부에이 필드를주게 트레이 -이 이름의. 533 00:23:46,630 --> 00:23:49,540 우리는 아마도 무엇을 초기화한다 크기가 우리가 원하는 경우에 534 00:23:49,540 --> 00:23:51,040 이 스택을 사용하기 시작? 535 00:23:51,040 --> 00:23:53,070 >> STEVEN : 트레이 하위 3입니다. 536 00:23:53,070 --> 00:23:53,910 >> DAVID 마란 : 그래서, 확인을 클릭합니다. 537 00:23:53,910 --> 00:23:56,710 명확하게, 용량은 선언 다른 세 개. 538 00:23:56,710 --> 00:23:58,570 그리고 그게 내가 사용한 적이 무엇을 배열을 할당합니다. 539 00:23:58,570 --> 00:24:03,535 크기는 참조하는 것입니다 얼마나 많은 트레이 스택에 현재. 540 00:24:03,535 --> 00:24:03,880 >> STEVEN : 제로. 541 00:24:03,880 --> 00:24:04,460 >> DAVID 마란 : 그래서 0이되어야합니다. 542 00:24:04,460 --> 00:24:07,760 그래서 가서, 어떤 손가락, 크기 0을 그립니다. 543 00:24:07,760 --> 00:24:08,440 좋아. 544 00:24:08,440 --> 00:24:10,920 그래서 지금이 내부 무엇 여기, 우리는 모르겠어요. 545 00:24:10,920 --> 00:24:12,160 이들은 정말 그냥 쓰레기 값입니다. 546 00:24:12,160 --> 00:24:14,800 그래서 우리는 물음표를 그릴 수도 있지만 지금 보드를 청결하게 유지하자 547 00:24:14,800 --> 00:24:16,300 그것은 중요하지 않기 때문에 이거야. 548 00:24:16,300 --> 00:24:19,130 우리는 배열을 초기화 할 필요가 없습니다 아무것도 우리가 알고있는 경우 때문에 549 00:24:19,130 --> 00:24:23,100 스택의 크기가 0이고, 잘, 우리 에서 아무것도보고하지 않아야 550 00:24:23,100 --> 00:24:25,590 어쨌든에서이 배열 이 시점 시간이있다. 551 00:24:25,590 --> 00:24:29,970 >> 그래서 지금 밀어한다고 가정 스택에 번호 9. 552 00:24:29,970 --> 00:24:33,750 우리가 어떻게 데이터 구조를 업데이트해야합니다 이 블랙 박스 내부에? 553 00:24:33,750 --> 00:24:35,540 어떤 값을 변경해야합니까? 554 00:24:35,540 --> 00:24:36,200 >> STEVEN : 내 - 555 00:24:36,200 --> 00:24:37,400 사이즈는? 556 00:24:37,400 --> 00:24:37,650 >> DAVID 마란 : OK. 557 00:24:37,650 --> 00:24:38,770 크기는 얼마가되어야? 558 00:24:38,770 --> 00:24:39,580 >> STEVEN : 크기는 하나가 될 것입니다. 559 00:24:39,580 --> 00:24:39,870 >> DAVID 마란 : OK. 560 00:24:39,870 --> 00:24:41,110 그래서 크기는 하나가된다. 561 00:24:41,110 --> 00:24:42,540 그래서 당신은 몇 가지 방법으로이 작업을 수행 할 수 있습니다. 562 00:24:42,540 --> 00:24:46,920 이제, 내가 당신을 줄 수 있도록하여 손가락 지우개입니다. 563 00:24:46,920 --> 00:24:47,260 좋아. 564 00:24:47,260 --> 00:24:49,960 그런 다음 이제 손가락 브러쉬입니다. 565 00:24:49,960 --> 00:24:50,330 좋아. 566 00:24:50,330 --> 00:24:52,820 그리고 이제 또 무엇을 변경해야 분명히, 데이터 구조? 567 00:24:52,820 --> 00:24:57,060 >> STEVEN : 우리는에서거야 9 아래에서 위로. 568 00:24:57,060 --> 00:24:57,760 >> DAVID 마란 : 9. 569 00:24:57,760 --> 00:24:58,420 OK, 좋아. 570 00:24:58,420 --> 00:25:01,550 그래서 여전히에서 무엇을 중요하지 않습니다 위치 하나 또는 두 개의 그들이이기 때문에 571 00:25:01,550 --> 00:25:04,520 쓰레기 값은, 그러나 우리는 걱정하지한다 사이즈이므로이보고 572 00:25:04,520 --> 00:25:07,540 우리에게 말하고 만 첫 번째 요소 실제로 합법적이다. 573 00:25:07,540 --> 00:25:10,400 그래서 지금은 목록에 17을 누릅니다. 574 00:25:10,400 --> 00:25:11,830 어떤이 사진은 어떻게됩니까? 575 00:25:11,830 --> 00:25:14,720 >> STEVEN : 그래서 크기는 두 가지로 갈 것입니다. 576 00:25:14,720 --> 00:25:15,300 >> DAVID 마란 : OK. 577 00:25:15,300 --> 00:25:16,070 당신은 지우개입니다 - 578 00:25:16,070 --> 00:25:16,810 죄송합니다. 579 00:25:16,810 --> 00:25:18,026 당신은 지우개입니다. 580 00:25:18,026 --> 00:25:18,840 >> STEVEN : 지우개. 581 00:25:18,840 --> 00:25:19,720 >> DAVID 마란 : 당신은 브러쉬입니다. 582 00:25:19,720 --> 00:25:20,560 >> STEVEN : 브러쉬. 583 00:25:20,560 --> 00:25:20,920 >> DAVID 마란 : OK. 584 00:25:20,920 --> 00:25:21,600 그리고 또 뭐가? 585 00:25:21,600 --> 00:25:22,600 >> 다음 그리고 우리 - : STEVEN 586 00:25:22,600 --> 00:25:22,915 >> DAVID 마란 : 우리는 17 밀었다. 587 00:25:22,915 --> 00:25:24,760 >> STEVEN : 우리는, 그래서 정상에 17 스틱 - 588 00:25:24,760 --> 00:25:25,710 >> DAVID 마란 : OK, 좋아. 589 00:25:25,710 --> 00:25:27,040 >> STEVEN : - 내려 놓습니다. 590 00:25:27,040 --> 00:25:27,530 >> DAVID 마란 : 좋아요. 591 00:25:27,530 --> 00:25:27,940 그것은 간단지고있어. 592 00:25:27,940 --> 00:25:29,300 나는 당신에게이 시간을 도움이 될 것 아니에요. 593 00:25:29,300 --> 00:25:30,510 22을 누릅니다. 594 00:25:30,510 --> 00:25:31,720 >> STEVEN : 완료. 595 00:25:31,720 --> 00:25:34,870 지우개되고. 596 00:25:34,870 --> 00:25:37,340 나는 브러쉬가되고 있어요. 597 00:25:37,340 --> 00:25:39,340 그리고 나서 22을 가하고 있습니다. 598 00:25:39,340 --> 00:25:40,100 >> DAVID 마란 : 22. 599 00:25:40,100 --> 00:25:40,620 우수. 600 00:25:40,620 --> 00:25:41,380 그래서 한 번 더. 601 00:25:41,380 --> 00:25:44,280 지금 밀어거야 스택에 26 위에. 602 00:25:44,280 --> 00:25:46,350 >> STEVEN : 오. 603 00:25:46,350 --> 00:25:50,278 세상에 오. 604 00:25:50,278 --> 00:25:52,520 당신은 정말 방심 저를 붙 잡았다. 605 00:25:52,520 --> 00:25:53,703 >> DAVID 마란 : 당신은하지 않았다 이 예견? 606 00:25:53,703 --> 00:25:55,930 >> STEVEN :이오고 보지 않았다. 607 00:25:55,930 --> 00:25:58,756 우리는 다시 초기 용량 있을까요? 608 00:25:58,756 --> 00:25:59,790 >> DAVID 마란 : 그건 좋은 질문이다. 609 00:25:59,790 --> 00:26:02,360 그래서 우리는 종류의 자신을 그린 것 여기에 모서리합니다. 610 00:26:02,360 --> 00:26:06,740 정말 스티븐 좋은 밖으로 없다 우리는이 배열을 할당했기 때문에 611 00:26:06,740 --> 00:26:09,130 정적, 그래서 내부 이야기하기 데이터 구조. 612 00:26:09,130 --> 00:26:12,170 그리고 우리는 본질적으로 하드 코딩했습니다 그것의 크기는 세 가지가 될 수 있습니다. 613 00:26:12,170 --> 00:26:14,170 그래서 우리는 정말 재 할당 할 수 없습니다. 614 00:26:14,170 --> 00:26:20,020 >> 우리는 우리가 다시 가서 수 있다면 트레이가 해당 포인터로 재정의 615 00:26:20,020 --> 00:26:22,300 우리는 다음에 손 메모리에 malloc을 사용합니다. 616 00:26:22,300 --> 00:26:25,050 때문에 우리는에서 메모리를 얻은 경우 malloc을 통해 힙, 우리 617 00:26:25,050 --> 00:26:26,430 다음을 해제 할 수 있습니다. 618 00:26:26,430 --> 00:26:29,630 그러나 그것을 해제하기 전에, 우리는 수 메모리의 큰 덩어리를 재 할당 619 00:26:29,630 --> 00:26:31,330 포인터를 업데이트하고, 등등. 620 00:26:31,330 --> 00:26:33,500 하지만 지금이 정말 가장 우리가 할 수 있습니다. 621 00:26:33,500 --> 00:26:36,360 푸시와 팝 아마 가고있다 약간의 오차 신호를받습니다. 622 00:26:36,360 --> 00:26:40,270 >> 그래서 예를 들면, 우리가 구현 푸시는 BOOL을 반환 할 수 있습니다 어느 623 00:26:40,270 --> 00:26:42,390 이전 사실, 사실, 사실 반환됩니다. 624 00:26:42,390 --> 00:26:48,390 그러나 네 번째, 그것은이 것 예를 들어, false를 반환합니다. 625 00:26:48,390 --> 00:26:48,540 좋아. 626 00:26:48,540 --> 00:26:49,540 아주 잘 했어. 627 00:26:49,540 --> 00:26:50,060 축하합니다. 628 00:26:50,060 --> 00:26:52,160 당신은 오늘 스트레스 공을 얻었습니다. 629 00:26:52,160 --> 00:26:53,110 >> [박수] 630 00:26:53,110 --> 00:26:54,382 >> STEVEN : 감사합니다. 631 00:26:54,382 --> 00:26:55,680 >> DAVID 마란 : 감사합니다. 632 00:26:55,680 --> 00:26:59,740 좋아, 그럼이 많이없는 것 같다 앞으로 단계, 오른쪽? 633 00:26:59,740 --> 00:27:01,410 우리는이 데이터 구조를 설명했다. 634 00:27:01,410 --> 00:27:02,320 그것은 바로, 강제적이었다? 635 00:27:02,320 --> 00:27:03,200 운영 체제는 그것을 좋아한다. 636 00:27:03,200 --> 00:27:06,360 분명히 웹이 사용 할 수 있습니다 아직 다른 응용 프로그램. 637 00:27:06,360 --> 00:27:10,870 그러나 우리가 걸 바보 제한 정렬 일주일에 두 제한을 맞댄 638 00:27:10,870 --> 00:27:12,880 여기서 우리는 크기의 배열을 해결했습니다. 639 00:27:12,880 --> 00:27:15,010 >> 그래서 몇 가지가 실제로있다 방법 우리는이 문제를 해결 할 수 있습니다. 640 00:27:15,010 --> 00:27:18,750 우리는 동적 배열을 할당 할 수 내가했듯이으로 어려운 코딩하지 641 00:27:18,750 --> 00:27:22,600 여기에 수행하지만, 대신에 다시 선언 이것은 단지로, 명확하게 642 00:27:22,600 --> 00:27:23,830 이런 식으로 뭔가. 643 00:27:23,830 --> 00:27:29,040 INT * 트레이는 결정되지 아직 용량에 대한. 644 00:27:29,040 --> 00:27:35,460 하지만 다른 스택을 선언 할 때 내 코드에서, 나는 다음 malloc을 호출 할 수 있습니다 645 00:27:35,460 --> 00:27:38,250 덩어리의 주소를 얻기 메모리 및 I는 할당 할 수 646 00:27:38,250 --> 00:27:39,980 트레이에 해당 주소를 입력합니다. 647 00:27:39,980 --> 00:27:43,340 >> 그리고 때문에 그냥 덩어리의 메모리, I 사각형 계속 사용할 수 있습니다 648 00:27:43,340 --> 00:27:45,450 일반적인 방법으로 대괄호 표기법. 649 00:27:45,450 --> 00:27:49,020 다시 말하지만, 이것은 일종의 거기 때문에 기능 배열과 동일하지만 650 00:27:49,020 --> 00:27:50,820 올 메모리의 덩어리 다시 malloc에​​에서. 651 00:27:50,820 --> 00:27:53,090 우리는 다른 사람과 같은 사람을 치료할 수 포인터 연산을 사용하거나 652 00:27:53,090 --> 00:27:54,440 대괄호 표기법. 653 00:27:54,440 --> 00:27:55,660 그래서 한 가지 방법이다. 654 00:27:55,660 --> 00:28:00,120 >> 하지만 어떻게 다른 우리는 이것을 구현할 수 있습니다 같은 데이터 구조에 잠재적으로? 655 00:28:00,120 --> 00:28:00,280 오른쪽? 656 00:28:00,280 --> 00:28:04,530 우리가이 문제를 해결할 것 같은 느낌 일주일 전에 같은 문제. 657 00:28:04,530 --> 00:28:08,860 이 문제에 대한 해결책은 무엇인가 스티븐로 실행 한? 658 00:28:08,860 --> 00:28:10,370 따라서 연결리스트, 맞아. 659 00:28:10,370 --> 00:28:13,410 >> 문제는 우리가 그림을 걸 경우 할당에 의해 코너에 자신 660 00:28:13,410 --> 00:28:17,580 사전에 너무 적은 메모리가 우리 어떻게 든, 잘 처리해야 661 00:28:17,580 --> 00:28:19,880 왜 그냥을 피할 수 모두 실행? 662 00:28:19,880 --> 00:28:26,170 왜 그냥 트레이로 선언하지 노드, 인체 공학적 연결리스트에 대한 포인터 663 00:28:26,170 --> 00:28:30,740 그리고 단순히 새로운 노드를 할당 스티븐 맞게 필요한 때마다 664 00:28:30,740 --> 00:28:32,400 데이터 구조에 번호입니다. 665 00:28:32,400 --> 00:28:34,200 >> 그래서 사진을 변경해야합니다. 666 00:28:34,200 --> 00:28:38,220 그것은 깨끗하고 아닐 거예요 세 정수의 단지 배열로 간단하다. 667 00:28:38,220 --> 00:28:42,970 지금은에 대한 포인터가 될 것 구조체, 그 구조체가는 668 00:28:42,970 --> 00:28:44,830 INT와 다음 포인터가 있습니다. 669 00:28:44,830 --> 00:28:47,670 그것은 그 포인터를 통해 이어질 것 같은 또 다른 구조체에 670 00:28:47,670 --> 00:28:48,600 같은 또 다른 구조체. 671 00:28:48,600 --> 00:28:50,560 그래서 사진은 실제로 것 조금 지저분를 얻을. 672 00:28:50,560 --> 00:28:52,950 그리고 우리는 화살표를 매기을 것이다 모든 것을 함께. 673 00:28:52,950 --> 00:28:55,280 >> 하지만 그 때문에, 오른쪽, 괜찮아요 우리는이 작업을 수행하는 방법을 살펴 보았다. 674 00:28:55,280 --> 00:28:58,180 그리고 일단 당신이 편안하게 링크처럼 구현하는 것이 675 00:28:58,180 --> 00:29:01,450 당신이해야 할 것이다 목록, 만약 당신 와 해시 테이블을 구현하도록 선택할 676 00:29:01,450 --> 00:29:05,120 P 세트 6에 대해 별도의 체인을 수행 할 수 있습니다 빌딩 블록, 또는로 사용 677 00:29:05,120 --> 00:29:08,870 성분, 또는 스크래치, 말 절차, 당신은, 당신을 넣어 뭔가 678 00:29:08,870 --> 00:29:12,560 자신의 퍼즐 조각을 만들어 그런 다음 다시 사용할 수있는. 679 00:29:12,560 --> 00:29:17,090 그래서 트레이드 오프,하지만 잠재적 인 솔루션 우리는 실제로 전에 본 적이. 680 00:29:17,090 --> 00:29:20,560 >> 그래서 매우 자주, 당신은이에게 매를 참조하십시오 이년 때 애플 출시 681 00:29:20,560 --> 00:29:23,060 새로운, 모든 미친 사람인가 애플의 외부 회선에 최대 682 00:29:23,060 --> 00:29:27,050 자신의 한계를 구입할 저장 하드웨어 업그레이드합니다. 683 00:29:27,050 --> 00:29:30,420 나는이 말을, 그 이유는, OK의 나는 그 사람 중 하나입니다. 684 00:29:30,420 --> 00:29:35,140 그래서 어떤 종류의 데이터 구조 이 현실을 나타낼 수 있습니다? 685 00:29:35,140 --> 00:29:36,980 >> 음,이 큐, 회선 통화 할 수 있습니다. 686 00:29:36,980 --> 00:29:40,270 그래서 영국은 일반적으로 부를 것이다 큐 어쨌든, 그래서 좋은 이름이다. 687 00:29:40,270 --> 00:29:44,960 그리고 큐 두 가지 작업 우리가 대기열에 전화 할게 지원해야한다 688 00:29:44,960 --> 00:29:48,900 작업 및 대기열에서 제외 작동, 이는이 비슷 689 00:29:48,900 --> 00:29:50,120 밀어 팝업하는 정신. 690 00:29:50,120 --> 00:29:54,060 그것은 다른 단지 일종의 협약 우리가 이것들을 호출하고 있습니다. 691 00:29:54,060 --> 00:29:57,680 하지만 뭔가를 큐에 저장하는 추가의 의미 또는 데이터 구조에 삽입합니다. 692 00:29:57,680 --> 00:29:59,570 대기열에서 제외하는 것은 그것을 제거하는 것을 의미합니다. 693 00:29:59,570 --> 00:30:05,170 그러나 스택은 LIFO 데이터이었다 반면 구조는, 큐가 먼저입니다 694 00:30:05,170 --> 00:30:06,740 데이터 구조 중 첫번째로 올려주세요. 695 00:30:06,740 --> 00:30:10,050 >> 당신은 선에있는 첫번째 사람이 있다면 당신이 얻을 수있는 첫 번째 사람이 될 것입니다 696 00:30:10,050 --> 00:30:12,420 라인 밖으로 새 장치를 구입할 수 있습니다. 697 00:30:12,420 --> 00:30:18,070 이 사람들이 얼마나 화가 될 것 상상 애플은 대신 스택을 사용하는 경우에 대한 698 00:30:18,070 --> 00:30:21,250 예, 피킹을 구현하는 새 장난감까지. 699 00:30:21,250 --> 00:30:24,310 그래서 큐를 확실히 이해하고, 우리는 모든 종류의 생각할 수 700 00:30:24,310 --> 00:30:27,480 응용 프로그램, 아마도, 큐, 당신이 공정성을 할 때 특히. 701 00:30:27,480 --> 00:30:30,040 그래서 우리는 어떻게 이러한 구현할 수 있습니다 데이터 구조로? 702 00:30:30,040 --> 00:30:33,680 >> 물론, 그 우리가 수도 제안 이 방법을 수행해야합니다. 703 00:30:33,680 --> 00:30:35,225 그래서 지금은 숫자를 가지고거야. 704 00:30:35,225 --> 00:30:38,190 그래서 우리는 단순하고 있지하겠습니다 반드시 트레이의 관점에서 이야기. 705 00:30:38,190 --> 00:30:40,220 의 사람들이받은 숫자에 불과합니다. 706 00:30:40,220 --> 00:30:43,760 용량이 다시가는, 문제를 해결 될 수있는 사람의 총 수 707 00:30:43,760 --> 00:30:46,900 이 라인 등 세 다른 어떤 값입니다. 708 00:30:46,900 --> 00:30:50,760 >> 하지만 난 트랙을 유지하는 데 필요한 제안 의 크기뿐만 아니라 709 00:30:50,760 --> 00:30:52,370 큐, 그것은 얼마나 많은 것들입니다. 710 00:30:52,370 --> 00:30:56,310 그래서 크기는 현재 크기, 용량은 최대 크기입니다. 711 00:30:56,310 --> 00:30:58,540 그냥 다시 명명법 대회 있습니다. 712 00:30:58,540 --> 00:31:03,680 이유는 추가 INT 내부를해야합니까 에 누구를 추적 할 큐의 713 00:31:03,680 --> 00:31:05,365 라인 셨나요? 714 00:31:05,365 --> 00:31:07,930 715 00:31:07,930 --> 00:31:10,910 왜이 경우 그렇게해야합니까? 716 00:31:10,910 --> 00:31:14,750 717 00:31:14,750 --> 00:31:16,190 >> 음,이 사진 어떻게 변경하려는? 718 00:31:16,190 --> 00:31:19,280 아마 대부분 재사용 할 수 있습니다 이 그림. 719 00:31:19,280 --> 00:31:21,480 내가 가서 여기에 무엇을 지울 수 있습니다. 720 00:31:21,480 --> 00:31:24,580 우리는이에게 약간을 줄 것이다 여기에 다른 이름으로 백업합​​니다. 721 00:31:24,580 --> 00:31:28,930 17의 제거하자,하자 제거 9,의는 3 없애 보자. 722 00:31:28,930 --> 00:31:30,410 과의이 한 가지를 추가 할 수 있습니다. 723 00:31:30,410 --> 00:31:34,710 나는 추적하는 데 필요한 제안 목록의 앞, 이는 단지 724 00:31:34,710 --> 00:31:35,570 뿐만 아니라 INT 될 것. 725 00:31:35,570 --> 00:31:36,550 그리고 우리는 그것을 간단하게 할 겁니다. 726 00:31:36,550 --> 00:31:37,740 지금은 정보 없음 연결리스트가 없습니다. 727 00:31:37,740 --> 00:31:40,900 >> 우리는 우리가가는거야 인정합니다 이 제한에 반대 부딪. 728 00:31:40,900 --> 00:31:43,720 그러나 나는 무엇을 보려고 싶어 이 시간을 어떻게? 729 00:31:43,720 --> 00:31:47,240 내가 가서 처음으로 이렇게 가정 사람 줄에 제공하고, 730 00:31:47,240 --> 00:31:48,560 그 번호 9이다. 731 00:31:48,560 --> 00:31:49,680 우리는 스트레스 공을 가지고 않습니다. 732 00:31:49,680 --> 00:31:51,330 나는 말, 두 개 또는 세 사람이 도용 할 수 있습니까? 733 00:31:51,330 --> 00:31:52,690 하나, 둘, 셋? 734 00:31:52,690 --> 00:31:53,120 올라 와요. 735 00:31:53,120 --> 00:31:56,022 오른쪽 전면에서, 때문에 우리는이 사람이 신속하게됩니다. 736 00:31:56,022 --> 00:31:59,415 >> 당신의 각각은 지금이 될 것입니다 애플 라인 팬 소년. 737 00:31:59,415 --> 00:32:03,970 738 00:32:03,970 --> 00:32:06,210 당신이 애플의 하드웨어를받을 수 없습니다 이 생각의 끝에. 739 00:32:06,210 --> 00:32:06,500 좋아. 740 00:32:06,500 --> 00:32:09,430 당신은 9 번입니다, 그래서 당신이있어 17 번, 22 번. 741 00:32:09,430 --> 00:32:12,130 이처럼, 임의의 숫자 학생 ID 나 이것 저것. 742 00:32:12,130 --> 00:32:14,550 그냥 순간에, 시작하자 물건을 추가 시작합니다. 743 00:32:14,550 --> 00:32:16,000 그리고 여기이 시간에 보드를 실행합니다. 744 00:32:16,000 --> 00:32:19,570 >> 따라서이 경우는 초기화 한 전면 수 - 745 00:32:19,570 --> 00:32:22,380 사실 정말 상관 없어 무슨 크기가 0이기 때문에 앞입니다. 746 00:32:22,380 --> 00:32:24,480 그래서 이것은 단지뿐만 아니라 수도 물음표합니다. 747 00:32:24,480 --> 00:32:26,170 이들은 모두 물음표입니다. 748 00:32:26,170 --> 00:32:29,880 그래서 지금 우리가 실제로 보려면 시작합니다 사람들은 가게에 서서. 749 00:32:29,880 --> 00:32:33,320 >> 그래서 9 번하면, 당신은 처음이야 이 AM 5시에, 가서 줄 750 00:32:33,320 --> 00:32:34,210 또는 전날 밤. 751 00:32:34,210 --> 00:32:34,580 확인을 클릭합니다. 752 00:32:34,580 --> 00:32:35,940 이제 9 여기에있다. 753 00:32:35,940 --> 00:32:37,940 따라서 9는 목록의 앞에 있습니다. 754 00:32:37,940 --> 00:32:41,440 그래서 내가 가서 업데이트 할거야 이 전류 데이터의 크기 755 00:32:41,440 --> 00:32:44,740 구조는 더 이상 0이하지 않으려면 그러나 1로. 756 00:32:44,740 --> 00:32:47,630 나는에서 9를 넣어거야 목록의 앞. 757 00:32:47,630 --> 00:32:51,020 내가 가서 화면을 전환하자 그래서 우리는 여기에 우리 과거 볼 수 있습니다. 758 00:32:51,020 --> 00:32:53,220 >> 그리고 지금 나는 무엇을 원하는가 앞에 넣어? 759 00:32:53,220 --> 00:32:56,240 내가 추적 할 거라는 지금 큐의 앞 760 00:32:56,240 --> 00:32:58,570 위치 0에 있습니다. 761 00:32:58,570 --> 00:33:00,510 무엇이 다음에 일어날 것 때문에? 762 00:33:00,510 --> 00:33:03,000 글쎄, 난 큐에 이제 가정 17뿐만 아니라. 763 00:33:03,000 --> 00:33:04,510 그래서 거기에 줄을 뛰어. 764 00:33:04,510 --> 00:33:07,060 그리고 또, 도어의 종류는에 가게는 여기에 것입니다. 765 00:33:07,060 --> 00:33:08,700 그래서 지금은 17 추가했습니다. 766 00:33:08,700 --> 00:33:10,810 그리고이 녀석이 차단 되더라도 OK의 화면, 767 00:33:10,810 --> 00:33:12,300 우리는 여기에서 그것을 볼 수 있기 때문이다. 768 00:33:12,300 --> 00:33:12,910 미안 해요. 769 00:33:12,910 --> 00:33:13,810 >> 대상 : 우리는 이동할 수 있습니다 - 770 00:33:13,810 --> 00:33:14,660 >> DAVID 마란 : 아니, 괜찮아. 771 00:33:14,660 --> 00:33:16,000 그것은 거기 거대한이다. 772 00:33:16,000 --> 00:33:18,580 그래서 17 내부 큐에서 지금이다. 773 00:33:18,580 --> 00:33:21,332 어느를 업데이트해야합니다 필드 지금 생각? 774 00:33:21,332 --> 00:33:23,210 OK, 확실히 크기입니다. 775 00:33:23,210 --> 00:33:26,430 그리고 어떻게 전면 어떻습니까? 776 00:33:26,430 --> 00:33:27,040 OK, 아니. 777 00:33:27,040 --> 00:33:30,200 전면 변경되지해야하기 때문에 스택과는 달리, 우리는 778 00:33:30,200 --> 00:33:31,370 공정성을 유지하려고합니다. 779 00:33:31,370 --> 00:33:35,150 9이 먼저 온 경우에, 우리는 9 할 라인의 첫 번째 아웃 할 수 780 00:33:35,150 --> 00:33:36,420 그리고 저장소에. 781 00:33:36,420 --> 00:33:37,220 >> 사실,의​​는 것을 볼 수 있습니다. 782 00:33:37,220 --> 00:33:42,235 우리는 22를 삽입하기 전에하자 가서 대기열에서 제외 9. 783 00:33:42,235 --> 00:33:42,970 이름이 뭐였더라? 784 00:33:42,970 --> 00:33:43,680 >> 대상 : 제이크. 785 00:33:43,680 --> 00:33:45,440 >> DAVID 마란 : 제이크 것입니다 현재 대기열 수 있습니다. 786 00:33:45,440 --> 00:33:48,050 그래서 당신은 가게에 걸어 얻는다. 787 00:33:48,050 --> 00:33:49,880 그리고 척하는 가게 거기입니다. 788 00:33:49,880 --> 00:33:51,970 그래서 지금 필요한 사항 - DIT-DIT-DIT! 789 00:33:51,970 --> 00:33:53,400 이제 어떻게 일어날 필요가 있겠습니까? 790 00:33:53,400 --> 00:33:54,490 디자인 결정. 791 00:33:54,490 --> 00:33:56,825 그래서 나쁜 본능 만 - 이름이 뭐였더라? 792 00:33:56,825 --> 00:33:57,090 >> 대상 : 데이비드. 793 00:33:57,090 --> 00:33:57,500 >> DAVID 마란 : 데이비드. 794 00:33:57,500 --> 00:33:58,810 그래서 다윗은 어떻게 했습니까? 795 00:33:58,810 --> 00:34:02,590 그 데이터를 수정 정렬하려고했다 자신의 위치에서 구조 및 이동 796 00:34:02,590 --> 00:34:04,100 제이크의 이전 위치로. 797 00:34:04,100 --> 00:34:06,740 우리가하고자하는 경우 그 괜찮습니다 로 그를 받아들이 798 00:34:06,740 --> 00:34:08,199 구현 세부 사항입니다. 799 00:34:08,199 --> 00:34:11,100 하지만 먼저,의 데이터를 업데이트 할 수 있도록 우리는 구조를 그것을하기 전에. 800 00:34:11,100 --> 00:34:14,139 나는 모든 아이디어를 좋아하지 않는니까 사람들이 줄을 이동. 801 00:34:14,139 --> 00:34:17,360 >> 다윗은 그것을 수행하는 경우 그것은 더 큰 문제 없다 한 번, 그러나 다시, 다시 생각한다 802 00:34:17,360 --> 00:34:20,360 우리에 8 자원 봉사자를했다했을 때 무대와 우리는 삽입과 같이 했어 803 00:34:20,360 --> 00:34:22,600 우리가 시작했던 정렬 주위 사람을 이동. 804 00:34:22,600 --> 00:34:23,790 맞아, 비싸있어? 805 00:34:23,790 --> 00:34:28,330 그 큰 O 나에 대해 싫증이 나다 만드는 N으로, n은 큰 O를 다시 제곱. 806 00:34:28,330 --> 00:34:30,650 그것은 같은 느낌이 아니에요 이상적인 결과. 807 00:34:30,650 --> 00:34:32,080 >> 그럼 그냥이 업데이트 할 수 있습니다. 808 00:34:32,080 --> 00:34:35,120 그래서 큐의 크기 더 이상이 없습니다. 809 00:34:35,120 --> 00:34:37,090 이제 단순히 하나입니다. 810 00:34:37,090 --> 00:34:40,360 하지만 지금 뭔가를 업데이트 할 수 있습니다 나는 전에 업데이트되지 않았습니다 811 00:34:40,360 --> 00:34:41,130 목록의 앞. 812 00:34:41,130 --> 00:34:45,420 난 그냥 말할 수, 그 위치는 1입니다? 813 00:34:45,420 --> 00:34:49,770 그래서 지금 우리가 여기에 쓰레기 값이 쓰레기는 여기에 값 및 데이비드 814 00:34:49,770 --> 00:34:51,469 이 쓰레기의 중간. 815 00:34:51,469 --> 00:34:54,980 그러나 데이터 구조 그대로이다. 816 00:34:54,980 --> 00:34:58,540 >> 그리고 사실, 난 할 필요가 없습니다 제이크의 이전 번호를 변경 817 00:34:58,540 --> 00:35:00,460 9, 대숩 때문이다. 818 00:35:00,460 --> 00:35:04,470 지금에 충분한 정보를 가지고 나는 거기에 한 사람 알고있는 사이즈 819 00:35:04,470 --> 00:35:05,030 이 큐. 820 00:35:05,030 --> 00:35:08,340 그리고 내가 아는 그 사람 위치 1이 아니라 0이다. 821 00:35:08,340 --> 00:35:09,760 내가 계산 아니에요. 822 00:35:09,760 --> 00:35:11,300 뿐만 아니라 1 그래서. 823 00:35:11,300 --> 00:35:13,410 따라서 데이터 구조는 여전히 OK입니다. 824 00:35:13,410 --> 00:35:14,330 >> 그럼, 다음에 어떻게됩니까? 825 00:35:14,330 --> 00:35:15,010 하자 대기열 - 826 00:35:15,010 --> 00:35:15,370 당신의 이름은 무엇입니까? 827 00:35:15,370 --> 00:35:16,160 >> 대상 : 캘런. 828 00:35:16,160 --> 00:35:16,580 >> DAVID 마란 : 캘런. 829 00:35:16,580 --> 00:35:20,770 의는 캘런를 큐에있게하고, 22 대기열에 지금이다. 830 00:35:20,770 --> 00:35:22,300 그래서 지금 여기에 변화가 무엇인가? 831 00:35:22,300 --> 00:35:24,380 프런트에 갈되지 않습니다 분명히 변경할 수 있습니다. 832 00:35:24,380 --> 00:35:27,160 크기는 다시 2로 변경하는 것입니다. 833 00:35:27,160 --> 00:35:31,590 22 여기서 끝, 9, 여전히 존재 그러나 그것은 효과적으로의 834 00:35:31,590 --> 00:35:32,600 지금은 쓰레기 값입니다. 835 00:35:32,600 --> 00:35:35,910 그냥 제이크 과거의 잔재이다. 836 00:35:35,910 --> 00:35:39,200 >> 그래서 지금 일어나는 경우 어떻게 나는 데이비드 큐에서 제거? 837 00:35:39,200 --> 00:35:41,560 마지막으로 작업 대기열에서 제외 데이비드. 838 00:35:41,560 --> 00:35:46,070 우리는 변화 할 수 있습니다,하지만하자를 제안 가능한 약간의 작업으로 수행. 839 00:35:46,070 --> 00:35:50,280 이제 내 데이터 구조 간다 2에서 1로 크기가 백업하십시오. 840 00:35:50,280 --> 00:35:53,730 그러나 큐의 앞 지금은 2가됩니다. 841 00:35:53,730 --> 00:35:56,640 나는이 번호를 변경할 필요가 없습니다 그들이있어 아직 있기 때문에 842 00:35:56,640 --> 00:35:58,230 그냥 쓰레기 값. 843 00:35:58,230 --> 00:35:59,720 >> 하지만 지금은 어떻게됩니까? 844 00:35:59,720 --> 00:36:03,280 나는 26 자신을 큐에 가정? 845 00:36:03,280 --> 00:36:05,890 여기에 속하는 것 같은 느낌. 846 00:36:05,890 --> 00:36:06,890 그래서 나는 대기열에 넣는거야. 847 00:36:06,890 --> 00:36:08,760 그래서 나는 어떤 종류의 여기에 속한다. 848 00:36:08,760 --> 00:36:11,300 그리고 당신은 확실히 않더라도 무대에서 시각이 주셔서 감사합니다, 849 00:36:11,300 --> 00:36:15,075 우리는 충분한 공간을 가지고 있기 때문에, 내가해야 여기에 서하지, 왜? 850 00:36:15,075 --> 00:36:16,290 >> 대상 : 당신이 범위를 벗어입니다. 851 00:36:16,290 --> 00:36:16,370 >> DAVID 마란 : 오른쪽. 852 00:36:16,370 --> 00:36:16,940 나는 범위를 벗어 해요. 853 00:36:16,940 --> 00:36:19,330 내가 넘어 색인 것 이 배열의 경계입니다. 854 00:36:19,330 --> 00:36:23,420 정말 중 하나에 있어야합니다 세 가지 위치. 855 00:36:23,420 --> 00:36:25,150 이제 어디로 가야하는 가장 자연스러운입니까? 856 00:36:25,150 --> 00:36:27,760 나는 우리가 활용 제안 일주일에 한 트릭. 857 00:36:27,760 --> 00:36:30,150 Mod 연산자, 비율입니다. 858 00:36:30,150 --> 00:36:36,850 나는 기술적으로 서니까 위치 3,하지만 난 3 모드 용량을 859 00:36:36,850 --> 00:36:40,250 그래서 3 퍼센트 기호 3 - 860 00:36:40,250 --> 00:36:40,970 용량은 3이다. 861 00:36:40,970 --> 00:36:41,720 그게 뭐야? 862 00:36:41,720 --> 00:36:43,700 나머지는 언제 무엇입니까 당신은 3으로 3 분할? 863 00:36:43,700 --> 00:36:44,070 0. 864 00:36:44,070 --> 00:36:48,140 >> 저를두고 그래서 제이크이었다 이것은 실제로 좋은 것입니다. 865 00:36:48,140 --> 00:36:50,370 그래서 지금 구현 이 물건은 것의 866 00:36:50,370 --> 00:36:51,250 두통의 비트 수. 867 00:36:51,250 --> 00:36:53,740 그것은 정말로 단지 한 줄의 두통의 코드. 868 00:36:53,740 --> 00:36:56,580 하지만 적어도 지금은 쓰레기가있다 값이 여기에 있지만, 두 가지가있다 869 00:36:56,580 --> 00:36:57,910 여기에 합법적 인 정수. 870 00:36:57,910 --> 00:37:04,160 그리고 지금 우리가 할 것을 주장 우리는 너무 오래 같이 할 필요가 정확히 871 00:37:04,160 --> 00:37:08,600 우리는 무엇 제이크의 변경 값은 26이 될 것이었다. 872 00:37:08,600 --> 00:37:12,110 >> 우리는 지금도 충분한 정보를 가지고 무결성을 유지하기 위해 873 00:37:12,110 --> 00:37:13,060 이 데이터 구조. 874 00:37:13,060 --> 00:37:17,160 우리는 여전히 어떤 운으로있을 때 우리 네 개 이상의 총을 삽입 할 875 00:37:17,160 --> 00:37:20,740 요소,하지만 난 적어도 만들 꽤 있습니다 이 상수의 효율적인 사용 876 00:37:20,740 --> 00:37:21,740 시간이 실제로있다. 877 00:37:21,740 --> 00:37:27,150 나는 변화에 대해 걱정할 필요가 없습니다 다윗의 경사와 같은 사람이 있었다. 878 00:37:27,150 --> 00:37:30,816 >> 스택에 대한 질문 또는이 큐? 879 00:37:30,816 --> 00:37:32,184 >> 관객은 : 이유입니다 당신이 알고 있도록 크기를 필요로 880 00:37:32,184 --> 00:37:34,010 사람을 가지고 어디? 881 00:37:34,010 --> 00:37:34,770 >> DAVID 마란 : 그렇습니다. 882 00:37:34,770 --> 00:37:38,230 나는 배열의 크기를 알 필요가 내가 정확히 알 필요가 있기 때문에 883 00:37:38,230 --> 00:37:41,940 이러한 값의 대부분은 합법적이며, 배치 할 위치를 그래서 내가 찾을 수있는 884 00:37:41,940 --> 00:37:42,800 다음 사람. 885 00:37:42,800 --> 00:37:43,300 정확히. 886 00:37:43,300 --> 00:37:44,580 크기는 - 887 00:37:44,580 --> 00:37:46,360 실제로, 우리는 아직이 업데이트되지 못했습니다. 888 00:37:46,360 --> 00:37:48,380 나는 26에 자신을 추가했습니다. 889 00:37:48,380 --> 00:37:51,760 크기, 지금은 1 만, 2. 890 00:37:51,760 --> 00:37:57,780 그래서 지금이 참으로 저를 찾을 수 목록의 머리, 이는 0이 아닌 891 00:37:57,780 --> 00:37:59,250 1 만 2입니다. 892 00:37:59,250 --> 00:38:01,665 목록의 앞 실제로 22 번이다. 893 00:38:01,665 --> 00:38:05,120 그는 먼저 와서, 그래서 그는해야하기 때문에 내 앞에 가게에 허용, 894 00:38:05,120 --> 00:38:08,780 비록 시각적으로 내가 서있어 가까이 저장할 수 있습니다. 895 00:38:08,780 --> 00:38:09,220 >> 모든 권리? 896 00:38:09,220 --> 00:38:12,410 이 녀석 갈채 그리고 우리는 그들을 거기서 드리겠습니다. 897 00:38:12,410 --> 00:38:17,090 >> [박수] 898 00:38:17,090 --> 00:38:18,150 >> DAVID 마란 : 나는하도록 할 수 당신은 트레이를 유지합니다. 899 00:38:18,150 --> 00:38:20,760 우리는 경우 어떻게되는지 볼 수 당신이 원하는,하지만 어쩌면 아닙니다. 900 00:38:20,760 --> 00:38:21,590 좋아. 901 00:38:21,590 --> 00:38:25,380 그래서 지금이 우리를 떠나지 않습니다? 902 00:38:25,380 --> 00:38:28,900 음, 거기에있는 나에게 제안하자 우리가 할 수 몇 가지 다른 데이터 구조 903 00:38:28,900 --> 00:38:33,810 것입니다 우리의 도구 키트에 추가 시작 사실은 꽤, 상당히 관련 등의 수 904 00:38:33,810 --> 00:38:35,270 우리는 웹 물건에 뛰어들. 905 00:38:35,270 --> 00:38:38,150 또, 어떤 연결이있는 의 형태로 나무에 906 00:38:38,150 --> 00:38:40,550 DOM, 문서라는 것을 개체 모델. 907 00:38:40,550 --> 00:38:42,370 그러나 우리는 더 볼 수 있습니다 그렇게 오래 전에. 908 00:38:42,370 --> 00:38:46,260 >> 내가 definitionally 제안하게하는 우리 지금 당신이로 알고 있습니다 어떤 나무를 호출 909 00:38:46,260 --> 00:38:48,820 가족 나무, 당신보다 에서 약간의 조상이 910 00:38:48,820 --> 00:38:49,790 나무의 뿌리. 911 00:38:49,790 --> 00:38:54,480 에서 족장이나 여자 가장 트리의 맨. 912 00:38:54,480 --> 00:38:56,700 배우자가없는,이 경우합니다. 913 00:38:56,700 --> 00:39:00,940 그러나 우리는 지금 우리가 전화 할게 뭔지 걸어 노드입니다 아이들, 914 00:39:00,940 --> 00:39:05,480 왼쪽의 자녀 또는 오른쪽 자식 오프 여기에 묘사 된대로 화살표. 915 00:39:05,480 --> 00:39:10,490 >> 트리 데이터 구조 즉,에 컴퓨터, 트리 제로가 916 00:39:10,490 --> 00:39:11,480 이상의 노드. 917 00:39:11,480 --> 00:39:13,500 그것은 적어도 하나의 노드가있는 경우, 그는 루트라고. 918 00:39:13,500 --> 00:39:15,700 그것은 시각적으로 그 물건의 우리는 정상에 그립니다. 919 00:39:15,700 --> 00:39:20,280 그리고 해당 노드가 다른 노드 버리면 할 수 있습니다 , 0, 1 또는 2 또는 3이 920 00:39:20,280 --> 00:39:23,600 또는 그러나 많은 아이들 데이터 구조를 지원합니다. 921 00:39:23,600 --> 00:39:29,150 이 경우, 루트, 저장 값을 하나, 두 아이, 2, 3을 가지고 922 00:39:29,150 --> 00:39:33,020 그래서 우리는 일반적으로 2 왼쪽 호출 어린이 및 3 오른쪽 아이. 923 00:39:33,020 --> 00:39:36,940 >> 그리고 우리는 5-6를 얻을 때 7, 6 중간 아이라고 할 수 있습니다. 924 00:39:36,940 --> 00:39:38,940 당신은 4 명의 아이들이있는 경우 그것은 혼란을 가져옵니다. 925 00:39:38,940 --> 00:39:42,260 그래서 우리는 그런 종류의 사용을 중지 구두 바로 가기. 926 00:39:42,260 --> 00:39:44,580 하지만 정말 그냥 가족 나무입니다. 927 00:39:44,580 --> 00:39:48,880 그리고 여기 단풍은 해당 노드입니다 자신은 아이가 없습니다. 928 00:39:48,880 --> 00:39:52,540 그들은 나무의 바닥을 건다. 929 00:39:52,540 --> 00:39:56,940 >> 그래서 우리가 어떻게 나무가를 구현할 수 있습니다 최대한 단 두 아이가? 930 00:39:56,940 --> 00:39:58,410 우리는 이진 트리 전화 할께. 931 00:39:58,410 --> 00:40:00,960 BI는 다시, 두 개의 의미 바이너리와 같은 경우. 932 00:40:00,960 --> 00:40:04,830 그리고 그것은, 0, 1을 가질 수 있습니다 극대 또는 두 아이. 933 00:40:04,830 --> 00:40:08,650 >> 나는 우리가 노드를 구현할 것을 제안합니다 INT N과 그 구조, 934 00:40:08,650 --> 00:40:11,910 그리고 두 개의 포인터는 하나라는 왼쪽, 하나는 오른쪽했다. 935 00:40:11,910 --> 00:40:14,830 하지만 그 그냥 좋은 위치 임의의 규칙. 936 00:40:14,830 --> 00:40:18,170 그리고 당신은 지금 특히 좋은 무엇을의 의 종류와 개념 고투 937 00:40:18,170 --> 00:40:21,300 재귀하거나하지라고 생각 아무것도 정말 솔루션 938 00:40:21,300 --> 00:40:23,120 특히 수 있다면 메모리가 부족. 939 00:40:23,120 --> 00:40:26,600 우리는 데이터에 대해 얘기하고 이제는 구조 및 허용 알고리즘 940 00:40:26,600 --> 00:40:31,030 우리는 통과하고 조작 할 수 재귀가 다시 온다 밝혀 941 00:40:31,030 --> 00:40:34,240 훨씬 더 강력한 아름다운 방법이 아니라면. 942 00:40:34,240 --> 00:40:38,670 >> 내가 제안이 구현되도록 검색 기능. 943 00:40:38,670 --> 00:40:39,870 두 개의 입력을 감안할 때 - 944 00:40:39,870 --> 00:40:41,570 그래서 블랙 박스로 생각. 945 00:40:41,570 --> 00:40:46,560 두 개의 입력, N, INT, 그리고 주어진 나무 포인터에 대한 포인터 946 00:40:46,560 --> 00:40:50,020 트리의 노드 또는 정말 루트 I 이 함수가 리턴 할 수있는 주장 947 00:40:50,020 --> 00:40:53,530 true 또는 false, 그 값 N 이 나무의 내부입니다. 948 00:40:53,530 --> 00:40:55,210 >> 이 블랙 박스 안에 무엇입니까? 949 00:40:55,210 --> 00:40:57,440 음, 네 가지. 950 00:40:57,440 --> 00:40:58,385 첫 번째 그냥 확인합니다. 951 00:40:58,385 --> 00:41:00,490 나무가 null의 경우는, false를 반환합니다. 952 00:41:00,490 --> 00:41:04,580 어떤 노드가없는 경우, 아무 N이 없습니다 어떤 번호가 없다, 다만 false를 반환합니다. 953 00:41:04,580 --> 00:41:12,330 당신이 찾고 있지만, N, 값이있는 경우 를 들어, 나무 화살표 n보다 적은이고, 954 00:41:12,330 --> 00:41:15,180 단지 명확하게, 그것은 때 무슨 뜻 이죠 나는 그 나무와 화살표 쓰기 955 00:41:15,180 --> 00:41:18,150 표기법, N? 956 00:41:18,150 --> 00:41:18,690 정확히. 957 00:41:18,690 --> 00:41:21,970 그것은 역 참조를 의미 포인터가 나무를했다. 958 00:41:21,970 --> 00:41:26,750 그 안에 들어간 다음 거기에 가서, 노드와 N 라 불리는 필드를 얻는다. 959 00:41:26,750 --> 00:41:30,810 그리고 한 실제 N을 비교 반대 검색에 전달. 960 00:41:30,810 --> 00:41:35,390 >> n은 N 값보다 작 그렇다면 트리 노드 자체가, 잘, 961 00:41:35,390 --> 00:41:36,720 그게 무슨 뜻 이죠? 962 00:41:36,720 --> 00:41:40,690 그것은 첫눈에 아무런 의미가 없습니다. 963 00:41:40,690 --> 00:41:40,900 오른쪽? 964 00:41:40,900 --> 00:41:45,560 당신의 배열이있을 때 그냥 좋아 값은 2 진을 적용 추천 965 00:41:45,560 --> 00:41:48,290 분할의 형태로 검색 정복. 966 00:41:48,290 --> 00:41:51,790 그러나 우리는 할 것을 가정해야 않았다 이진 검색이 전혀 작동 할 967 00:41:51,790 --> 00:41:54,510 전화 번호부과 이전 예? 968 00:41:54,510 --> 00:41:55,530 >> 정렬 방법. 969 00:41:55,530 --> 00:41:59,490 그러니 트리의 정의를 수정하자 여기에서 할 수있는 단지 나무 수없는 970 00:41:59,490 --> 00:42:00,880 아이들의 번호가 있습니다. 971 00:42:00,880 --> 00:42:04,700 다만 이진 트리,하는 수 최대한 0, 1 또는 2가있다. 972 00:42:04,700 --> 00:42:09,700 하지만 이진 검색 트리 또는 BST와 같은 이는 단지를 말하는 멋진 방법입니다 973 00:42:09,700 --> 00:42:15,430 같은 이진 트리가 모든 노드의 왼쪽 아이가있는 경우이며, 974 00:42:15,430 --> 00:42:16,830 노드보다. 975 00:42:16,830 --> 00:42:20,170 그리고 모든 노드의 오른쪽 자식, 존재하는 경우, 클 976 00:42:20,170 --> 00:42:21,740 노드 자체보다. 977 00:42:21,740 --> 00:42:25,200 >> 그래서 다른 말로하면, 경우에 당신은 그릴 수 있었다 나무 밖으로는 모든 숫자는 978 00:42:25,200 --> 00:42:30,620 신중하게 다음과 같이 균형되도록 경우 당신이 루트로 55이, 33 갈 수 있습니다 979 00:42:30,620 --> 00:42:33,090 그 왼쪽으로 55 이하이기 때문에. 980 00:42:33,090 --> 00:42:36,430 77 권리 때문에 갈 수 그것은 55보다 큰 있습니다. 981 00:42:36,430 --> 00:42:40,750 하지만 지금은, 동일한 정의를 알 그것은 구두로 재귀 적 정의의 982 00:42:40,750 --> 00:42:42,600 33를 신청합니다. 983 00:42:42,600 --> 00:42:47,610 33의 왼쪽 자식, 그것보다 작아야합니다 33의 오른쪽 아이, 44이어야합니다 984 00:42:47,610 --> 00:42:48,580 그것보다 큰. 985 00:42:48,580 --> 00:42:51,670 >> 그래서 이것은 이진 검색 나무이며, 나는 약간의를 사용하여 제안 986 00:42:51,670 --> 00:42:53,910 재귀, 우리는 이제 N을 찾을 수 있습니다. 987 00:42:53,910 --> 00:42:59,160 여기서 n은의 값이 n보다 작 그렇다면 현재 노드, 내가 갈거야 988 00:42:59,160 --> 00:43:04,090 앞서 펀트 말하자면, 그냥하기 대답은의 무엇이든 반환 989 00:43:04,090 --> 00:43:08,470 에 N을 검색 트리의 왼쪽 자식입니다. 990 00:43:08,470 --> 00:43:11,370 다시 주목,이 기능을 단지 노드 스타를 기대 991 00:43:11,370 --> 00:43:12,780 노드에 대한 포인터. 992 00:43:12,780 --> 00:43:17,360 그래서 확실히 나는 나무 마찬가지로 수 이끌 왼쪽 화살표, 993 00:43:17,360 --> 00:43:18,400 나 다른 노드로. 994 00:43:18,400 --> 00:43:19,480 그러나 노드는 무엇입니까? 995 00:43:19,480 --> 00:43:22,820 >> 음,이 선언에 따라, 왼쪽 그래서 그냥 그냥 포인터 996 00:43:22,820 --> 00:43:27,090 내가 검색 기능을 전달하고있어 의미 다른 포인터, 즉 997 00:43:27,090 --> 00:43:30,750 나타내는 하나의 내 왼쪽 아이의 나무. 998 00:43:30,750 --> 00:43:36,040 따라서이 경우 포인터가있는 경우, 33 이 샘플의 입력 사이에, 경우입니다 999 00:43:36,040 --> 00:43:40,740 n은의 값이 n보다 큰 트리에서 현재 노드 다음, 난 1000 00:43:40,740 --> 00:43:43,370 기타에 앞서 펀트 갈 방향과 방금 뭐라고, 내가하지 1001 00:43:43,370 --> 00:43:47,280 이 값을 n은 트리에 있는지 알고, 그러나 그것은 경우 나도 알아, 그것은 아래의 내 1002 00:43:47,280 --> 00:43:49,090 오른쪽 분기 말하자면. 1003 00:43:49,090 --> 00:43:53,120 그래서 나는 재귀 적으로 검색하고 부르 자, 다시 N을 전달하지만 전달 1004 00:43:53,120 --> 00:43:54,580 내 오른쪽 자식에 대한 포인터. 1005 00:43:54,580 --> 00:44:00,020 >> 즉, 나는 현재하고 있어요 경우 55 내가 99을 찾고 있어요, 내가 아는 99 1006 00:44:00,020 --> 00:44:04,270 내가 찢어 그래서 그냥 같이 55보다 큰 경우 전화 번호부 주 전 우리 1007 00:44:04,270 --> 00:44:07,140 오른쪽으로 가서 마찬가지로 우리는 여기 갈. 1008 00:44:07,140 --> 00:44:11,960 그것은 내 오른쪽에 그리고 만약 모르겠어요 아이, 그리고 그게 아니라, 77이 있습니다 만, 1009 00:44:11,960 --> 00:44:13,210 나는 그 방향으로 알고. 1010 00:44:13,210 --> 00:44:18,770 그래서, 내 오른쪽 자식 검색 전화 77, 및에서 검색 그림을 보자 1011 00:44:18,770 --> 00:44:24,950 이 경우이 임의의 99 예를 들어이 사실이다. 1012 00:44:24,950 --> 00:44:26,900 >> 또, 마지막 사건은 무엇인가? 1013 00:44:26,900 --> 00:44:28,620 나무의 경우는 null를 한 경우입니다. 1014 00:44:28,620 --> 00:44:31,890 n은 현재 노드의보다 적은 경우 값이 다른 경우가 있습니다. 1015 00:44:31,890 --> 00:44:35,120 n은 현재보다 큰 경우 노드의 값은 세 번째 경우이다. 1016 00:44:35,120 --> 00:44:38,250 네 번째이자 마지막 사건은 무엇입니까? 1017 00:44:38,250 --> 00:44:39,480 금방, 우리는 케이스에서 생각해? 1018 00:44:39,480 --> 00:44:44,690 그것은 n은에 있음을해야합니다 지금 제가하는 현재 노드. 1019 00:44:44,690 --> 00:44:49,640 >> 나는이 시점에서 55을 찾고 있어요 그래서 만약 의 이야기에서, 해당 분기 1020 00:44:49,640 --> 00:44:51,780 나무는 true를 반환합니다. 1021 00:44:51,780 --> 00:44:55,380 그래서 여기에 흥미로운 것은 그 우리 실제로, 주와 달리 과거의 우리 종류 1022 00:44:55,380 --> 00:44:56,740 의 두 가지 기본 경우가 있습니다. 1023 00:44:56,740 --> 00:44:58,300 그리고 그들은 필요가 없습니다 위쪽에있는 모두합니다. 1024 00:44:58,300 --> 00:45:01,390 상단은 기본 케이스 때문에 경우 나무가 NULL 할 수있는 아무것도 없습니다. 1025 00:45:01,390 --> 00:45:03,410 그냥 하드 코드를 반환 거짓의 값입니다. 1026 00:45:03,410 --> 00:45:07,400 >> 하단 분기의 일종이다 기본적으로는, 그것에 우리가 검사 한 경우 1027 00:45:07,400 --> 00:45:11,550 그것이 있어야 경우는 null, 우리는 확인했다 왼쪽,하지만하지 않아야, 우리는했습니다 1028 00:45:11,550 --> 00:45:14,640 그것은 바로해야하는 경우 확인하지만, 안된다, 명확하게는되어야합니다 1029 00:45:14,640 --> 00:45:15,870 바로 여기서 우리는. 1030 00:45:15,870 --> 00:45:16,780 기본 케이스 그건. 1031 00:45:16,780 --> 00:45:19,920 그래서 두 개의 재귀 경우가있다 중간에 거기에 끼워. 1032 00:45:19,920 --> 00:45:21,630 하지만 쓸 수 이 임의의 순서로한다. 1033 00:45:21,630 --> 00:45:24,520 난 그냥 어떤 종류의 자연의 느낌 생각 첫 번째 가능한 오류를 확인하려면, 1034 00:45:24,520 --> 00:45:28,340 그런 다음 왼쪽 확인한 다음 다음 바로 확인 당신이 노드한다고 가정 1035 00:45:28,340 --> 00:45:30,630 당신은 실제로 찾고 있습니다. 1036 00:45:30,630 --> 00:45:36,240 >> 그럼 왜이 유용 할 수 있습니다? 1037 00:45:36,240 --> 00:45:37,910 그래서 밝혀 - 1038 00:45:37,910 --> 00:45:42,110 나이 맛보기로 이동하자 여기에 그 웹에서이다. 1039 00:45:42,110 --> 00:45:44,920 우리는하지를 사용하여 시작하는거야 프로그래밍 처음에는 언어 만 1040 00:45:44,920 --> 00:45:46,030 마크 업 언어입니다. 1041 00:45:46,030 --> 00:45:48,740 의 하나되는 마크 업 언어 프로그래밍과 정신은 비슷할 1042 00:45:48,740 --> 00:45:51,715 언어,하지만 당신에게 제공하지 않습니다 능력은 논리적으로 자신을 표현한다. 1043 00:45:51,715 --> 00:45:55,070 그것은 단지 당신에게 능력을 제공 구조적으로 자신을 표현한다. 1044 00:45:55,070 --> 00:45:57,960 >> 당신은 어디에서 무언가를 넣고 싶어 페이지에서 웹 페이지? 1045 00:45:57,960 --> 00:45:59,200 무슨 색깔 당신이 그것을 할 싶어? 1046 00:45:59,200 --> 00:46:00,950 어떤 글꼴 크기 당신은 그것을 할 싶어? 1047 00:46:00,950 --> 00:46:02,970 어떤 단어는 실제로 당신을 웹 페이지에서 원하는? 1048 00:46:02,970 --> 00:46:04,060 그래서 그 마크 업 언어이다. 1049 00:46:04,060 --> 00:46:07,690 하지만 우리는 매우 신속하게 소개합니다 본격적인입니다 자바 스크립트, 1050 00:46:07,690 --> 00:46:08,560 프로그래밍 언어. 1051 00:46:08,560 --> 00:46:12,530 구문 외관과 매우 유사 C에,하지만 몇 가지가 있습니다 1052 00:46:12,530 --> 00:46:15,200 좋은, 더 강력한, 더 많은 사용자 친화적 인 기능을 제공합니다. 1053 00:46:15,200 --> 00:46:18,050 >> 이에 좌절 한 학기 요점은 우리가 거​​ 야입니다 1054 00:46:18,050 --> 00:46:22,065 곧 훨씬 적은에서 맞춤법 검사기를 구현 다른 언어를 사용하여 코드 라인 1055 00:46:22,065 --> 00:46:25,580 C 자체가 허용하는 것보다,하지만 이유에 대한 우리는 곧 이해하게 될 것입니다. 1056 00:46:25,580 --> 00:46:27,750 이 최초의 웹 페이지가됩니다. 1057 00:46:27,750 --> 00:46:30,120 그것은 완전히 실망 할 것 우리가 만드는 첫 번째. 1058 00:46:30,120 --> 00:46:31,400 그것은 단순히 안녕하세요 세계, 말할 것이다. 1059 00:46:31,400 --> 00:46:34,010 하지만 당신은 그것을 본 적이 없다면 전에, 이것은 HTML이다 1060 00:46:34,010 --> 00:46:35,670 하이퍼 텍스트 마크 업 언어. 1061 00:46:35,670 --> 00:46:39,310 >> 당신은에서 특정 메뉴 옵션에 가면 에 대한 웹 페이지의 대부분은 어떤 브라​​우저 1062 00:46:39,310 --> 00:46:43,160 인터넷, 당신은 HTML을 볼 수 있습니다 어떤 사람들은에 쓴 1063 00:46:43,160 --> 00:46:44,400 해당 웹 페이지를 만들 수 있습니다. 1064 00:46:44,400 --> 00:46:47,850 그리고 그것은 아마로 보지 않는다 간단한 또​​는만큼 깔끔한. 1065 00:46:47,850 --> 00:46:51,400 그러나 이들의 패턴을 따를 것 열린 괄호와 슬래시와 1066 00:46:51,400 --> 00:46:53,660 문자와 잠재적 숫자입니다. 1067 00:46:53,660 --> 00:46:56,770 >> 나는 당신에게 맛보기를 줘야 할 것 같아서 당신이 할 수있을 것이다 무엇 1068 00:46:56,770 --> 00:46:57,950 CS50 복용 후. 1069 00:46:57,950 --> 00:47:02,620 저 cs.harvard.edu / 약탈에 가자, 우리 자신의 롭 보덴의 홈페이지. 1070 00:47:02,620 --> 00:47:06,080 그분은 우리를 위해 이것을했다. 1071 00:47:06,080 --> 00:47:07,490 그래서 당신은 곧 일을 할 수있을 것이다. 1072 00:47:07,490 --> 00:47:10,660 또한, 당신은 무엇을 들었어요 오늘 아침 - 1073 00:47:10,660 --> 00:47:12,480 이 아침에 듣고 무엇을 - 1074 00:47:12,480 --> 00:47:13,780 >> [햄스터 댄스 음악] 1075 00:47:13,780 --> 00:47:15,702 >> - 내려가이 만들 수있을 것이다. 1076 00:47:15,702 --> 00:47:16,790 즉, 수요일에 우리를 기다리고 있습니다. 1077 00:47:16,790 --> 00:47:17,791 우리는 당신에게 다음을 볼 수 있습니다. 1078 00:47:17,791 --> 00:47:22,950 >> [햄스터 댄스 음악] 1079 00:47:22,950 --> 00:47:24,300 DAVID 마란 : 다음 CS50에서 - 1080 00:47:24,300 --> 00:47:31,670