1 00:00:00,000 --> 00:00:04,074 2 00:00:04,074 --> 00:00:05,990 DOUG 로이드 : 좋아, 당신이있어이 점 때문에 3 00:00:05,990 --> 00:00:09,020 아마 꽤 익숙한 배열과 연결리스트와 4 00:00:09,020 --> 00:00:10,950 두 가지 기본이되는 것입니다 데이터 구조 우리가했습니다 5 00:00:10,950 --> 00:00:16,810 세트 유지에 대해 얘기 유사한 데이터 유형의 데이터를 조직했다. 6 00:00:16,810 --> 00:00:19,080 >> 이제 우리는 얘기거야 변화의 몇 가지에 대한 7 00:00:19,080 --> 00:00:20,330 배열과 연결리스트에. 8 00:00:20,330 --> 00:00:22,362 이 비디오에서 우리는거야 스택에 대해 이야기합니다. 9 00:00:22,362 --> 00:00:25,320 특히 우리가 이야기하는거야 에 대한 데이터 구조는 스택이라고. 10 00:00:25,320 --> 00:00:28,510 이전 토론에서 리콜 포인터와 메모리에 대한, 11 00:00:28,510 --> 00:00:32,060 스택도입니다 메모리 세그먼트의 이름 12 00:00:32,060 --> 00:00:34,980 정적으로 선언 된 경우 memory-- 메모리 당신을 13 00:00:34,980 --> 00:00:38,730 당신의 이름을 변수, 이름, 등 등일과 기능 프레임있는 또한 우리 14 00:00:38,730 --> 00:00:41,000 호출 스택 프레임이 존재한다. 15 00:00:41,000 --> 00:00:45,421 그래서 이것은 스택 데이터 구조는 메모리가 아닌 스택 세그먼트. 16 00:00:45,421 --> 00:00:45,920 그래. 17 00:00:45,920 --> 00:00:46,890 >> 그러나 스택은 무엇인가? 18 00:00:46,890 --> 00:00:49,220 그래서 그것은 단지를 꽤 많이있어 구조의 특별한 종류의 19 00:00:49,220 --> 00:00:51,190 즉, 조직적인 방법으로 데이터를 유지한다. 20 00:00:51,190 --> 00:00:53,760 그리고 두 개의 매우를있다 일반적인 방법은 구현하기 21 00:00:53,760 --> 00:00:57,380 두개의 데이터 구조를 사용하여 스택 우리가 이미 잘 알고 있음, 22 00:00:57,380 --> 00:01:00,340 배열과 연결리스트. 23 00:01:00,340 --> 00:01:04,430 무엇 스택 특별하다 만든다 우리가 정보를 넣어하는 방법 24 00:01:04,430 --> 00:01:08,200 스택, 그리고 그 길을 우리에 스택에서 정보를 제거합니다. 25 00:01:08,200 --> 00:01:11,600 스택과 함께 특히 규칙은 가장입니다 26 00:01:11,600 --> 00:01:15,830 최근에 추가 된 요소를 제거 할 수있다. 27 00:01:15,830 --> 00:01:17,660 >> 이 스택의 경우 그래서 그것에 대해 생각합니다. 28 00:01:17,660 --> 00:01:21,170 우리는 정보를 말뚝 박기있어 자체의 상단에, 29 00:01:21,170 --> 00:01:24,271 상단 만 건 더미 제거 할 수 있습니다. 30 00:01:24,271 --> 00:01:27,020 우리는 아래에있는 것을 제거 할 수 없습니다 다른 모든 때문에 31 00:01:27,020 --> 00:01:28,020 붕괴 및 넘어. 32 00:01:28,020 --> 00:01:32,580 그래서 우리는 정말 스택을 구축하고 그 우리는 조각으로 조각을 제거해야합니다. 33 00:01:32,580 --> 00:01:36,590 이 때문에 우리는 일반적으로 참조 LIFO 구조로 스택에, 34 00:01:36,590 --> 00:01:38,940 , 첫 번째 아웃 지속됩니다. 35 00:01:38,940 --> 00:01:42,290 LIFO 먼저, 아웃 지속. 36 00:01:42,290 --> 00:01:45,635 >> 그래서 때문에 이러한 제한에의 정보가 추가 될 수 있는지 37 00:01:45,635 --> 00:01:49,080 와 스택에서 제거, 거기에 정말 두 가지가 우리는 스택과 함께 할 수 있습니다. 38 00:01:49,080 --> 00:01:52,010 우리는 인, 푸시 할 수 있습니다 우리는 추가에 사용하는 용어 39 00:01:52,010 --> 00:01:55,130 상단에 새로운 요소 스택, 또는 경우를 스택이 존재하지 않는다 40 00:01:55,130 --> 00:01:58,550 우리는 처음부터 만드는 첫 번째 장소에서 스택을 생성 41 00:01:58,550 --> 00:02:00,110 밀어 것입니다. 42 00:02:00,110 --> 00:02:04,990 그리고 팝, 즉 CS의 일종 용어 우리는 가장 최근를 제거하는 데 사용할 43 00:02:04,990 --> 00:02:08,330 스택의 상단에서 요소를 추가했다. 44 00:02:08,330 --> 00:02:11,130 >> 그래서 우리는 모두에서 볼거야 구현, 모두 배열 기반 45 00:02:11,130 --> 00:02:13,120 과 연결리스트 기반. 46 00:02:13,120 --> 00:02:14,870 그리고 우리는 갈거야 기반 배열로 시작합니다. 47 00:02:14,870 --> 00:02:19,990 그래서 여기의 기본적인 아이디어는 무엇 어레이 기반의 스택 데이터 구조 48 00:02:19,990 --> 00:02:21,140 같을 것이다. 49 00:02:21,140 --> 00:02:23,740 우리는 여기에 입력 된 정의가 있습니다. 50 00:02:23,740 --> 00:02:27,790 그 내부에서 우리는 두 멤버가 구조 또는 필드. 51 00:02:27,790 --> 00:02:29,880 우리는 배열을 가지고있다. 52 00:02:29,880 --> 00:02:32,400 그리고 또 내가 사용하고 임의의 데이터 유형 값. 53 00:02:32,400 --> 00:02:35,180 >> 그래서이 모든 데이터 유형이 될 수있다, INT의 문자 또는 다른 데이터 54 00:02:35,180 --> 00:02:37,080 이전에 만든 입력합니다. 55 00:02:37,080 --> 00:02:39,861 그래서 우리는 크기 용량의 배열을 가지고있다. 56 00:02:39,861 --> 00:02:44,010 용량은 파운드, 상수 정의되는 아마 다른 곳에서 우리의 파일. 57 00:02:44,010 --> 00:02:47,550 그래서이 특정 이미 알 우리가 경계하고 있습니다 구현 58 00:02:47,550 --> 00:02:49,800 자신은 일반적이었다 어레이의 경우, 59 00:02:49,800 --> 00:02:53,170 우리가 동적으로 크기를 조정할 수있는, 여기서 특정 숫자가있다 60 00:02:53,170 --> 00:02:55,450 소자의 최대 우리는 우리의 스택에 넣을 수 있습니다. 61 00:02:55,450 --> 00:02:57,930 이 경우에는 용량 소자이다. 62 00:02:57,930 --> 00:03:00,310 >> 우리는 또한 추적 스택의 상단. 63 00:03:00,310 --> 00:03:04,350 대부분의 어떤 요소 최근 스택에 추가? 64 00:03:04,350 --> 00:03:07,470 그래서 우리는 추적 변수라는 상단에. 65 00:03:07,470 --> 00:03:11,692 그리고이 모든 것이 함께 싸서됩니다 스택이라는 새로운 데이터 타입으로. 66 00:03:11,692 --> 00:03:13,400 그리고 우리는 생성하고 나면 새로운 데이터 유형 67 00:03:13,400 --> 00:03:15,410 우리는 그것을 같이 처리 할 수​​있다 다른 데이터 유형입니다. 68 00:03:15,410 --> 00:03:20,970 우리는 같은 스택의를 선언 할 수 있습니다 우리는 INT의 X, 또는 문자 y를 할 수 있습니다. 69 00:03:20,970 --> 00:03:22,990 그리고 우리는 스택 말할 때 들, 잘 무슨 일이 70 00:03:22,990 --> 00:03:26,420 우리는 세트를 얻을 수있다 메모리는 우리를 위해 따로 설정합니다. 71 00:03:26,420 --> 00:03:28,770 >> 이 경우, 용량 나는 분명히 결정했습니다 72 00:03:28,770 --> 00:03:33,470 내가있어 때문에 10 형 스택의 하나의 변수 73 00:03:33,470 --> 00:03:35,320 이는 두 개의 필드가 기억이 포함되어 있습니다. 74 00:03:35,320 --> 00:03:38,330 이 경우 어레이는 것입니다 정수의 배열하는 75 00:03:38,330 --> 00:03:40,440 로 내 대부분의 예제의 경우입니다. 76 00:03:40,440 --> 00:03:43,996 그리고 또 다른 정수 변수 가기를 저장할 수있는, 77 00:03:43,996 --> 00:03:45,870 가장 최근에 추가 된 스택 요소입니다. 78 00:03:45,870 --> 00:03:50,290 그렇게 하나의 스택 우리 다만이 같은 모습을 정의했다. 79 00:03:50,290 --> 00:03:53,190 그것은 포함하는 상자의 어레이 (10)의 어떤 80 00:03:53,190 --> 00:03:57,280 이 경우 정수가 될 것이며, 녹색 거기에 또 다른 정수 변수 81 00:03:57,280 --> 00:04:00,010 스택의 상단을 나타냅니다. 82 00:04:00,010 --> 00:04:02,600 >> 의 상단을 설정하려면 스택 우리는 단지 s.top을 말한다. 83 00:04:02,600 --> 00:04:04,890 즉, 우리가 접근 방법 구조 리콜의 필드. 84 00:04:04,890 --> 00:04:10,460 s.top 효과적으로 0 같음 우리의 스택이 작업을 수행합니다. 85 00:04:10,460 --> 00:04:12,960 그래서 다시 우리는 두 가지 작업을 우리가 지금 수행 할 수 있습니다. 86 00:04:12,960 --> 00:04:14,270 우리는 푸시 할 수 있습니다 우리는 팝업 수 있습니다. 87 00:04:14,270 --> 00:04:15,635 의 푸시 시작하자. 88 00:04:15,635 --> 00:04:18,260 다시, 새를 추가 추진 스택의 상단에 요소입니다. 89 00:04:18,260 --> 00:04:21,460 >> 그래서 우리가 어떻게해야합니까 이 배열 기반 구현? 90 00:04:21,460 --> 00:04:23,210 그럼 일반에 푸시 기능을 것입니다 91 00:04:23,210 --> 00:04:26,160 동의해야합니다 스택 포인터. 92 00:04:26,160 --> 00:04:28,610 이제 두 번째를 타고 그것에 대해 생각합니다. 93 00:04:28,610 --> 00:04:32,840 왜 우리는 동의 할 것이다 스택에 대한 포인터? 94 00:04:32,840 --> 00:04:36,830 에 이전 비디오에서 리콜 변수 범위와 포인터, 95 00:04:36,830 --> 00:04:42,350 우리가 보낸 경우 무슨 일이 일어날 지 스택, 매개 변수로 오히려이야? 96 00:04:42,350 --> 00:04:45,770 실제로 거기에 어떻게 전달 될 것인가? 97 00:04:45,770 --> 00:04:49,430 우리가 복사본을 만드는 기억 우리는 함수로 전달 될 때 98 00:04:49,430 --> 00:04:51,160 하지 않는 한 우리는 포인터를 사용합니다. 99 00:04:51,160 --> 00:04:55,380 그리고이 기능은 요구를 밀어 스택 포인터를 수락 100 00:04:55,380 --> 00:04:59,160 우리가 실제로 변화하고 있기 때문에 스택은 우리가 변경할 계획입니다. 101 00:04:59,160 --> 00:05:03,060 >> 다른 것은 푸시 아마에 싶어 받아들이는 입력 값의 데이터 요소이다. 102 00:05:03,060 --> 00:05:06,970 이 경우, 다시, 그 정수 우리는 스택의 상단에 추가 할 것입니다. 103 00:05:06,970 --> 00:05:08,680 그래서 우리는 우리의 두 개의 매개 변수를 가지고있다. 104 00:05:08,680 --> 00:05:11,310 우리는 무엇을하려고 지금 푸시 내부합니까? 105 00:05:11,310 --> 00:05:14,860 음, 간단하게, 우리는 단지 추가거야 스택의 상단에 해당 요소 106 00:05:14,860 --> 00:05:22,860 다음의 경우 상단을 변경 스택은 최고 값을 점이야입니다. 107 00:05:22,860 --> 00:05:25,639 그래서 이것은 무엇 기능입니다 푸시에 대한 선언 108 00:05:25,639 --> 00:05:27,680 에서처럼 보일 수 있습니다 배열 기반의 구현입니다. 109 00:05:27,680 --> 00:05:30,967 >> 다시이 단단하고 빠른 규칙 아닙니다 당신은이를 변경 할 수 있음 110 00:05:30,967 --> 00:05:32,050 그것은 다른 방법으로 다릅니다. 111 00:05:32,050 --> 00:05:33,840 아마도 S는 전 세계적으로 선언된다. 112 00:05:33,840 --> 00:05:36,180 그리고 당신도 필요하지 않습니다 이 매개 변수로 전달하는 것입니다. 113 00:05:36,180 --> 00:05:39,125 이것은 다시 단지이다 푸시에 대한 일반적인 경우. 114 00:05:39,125 --> 00:05:41,000 그리고 다른있다 방법을 구현합니다. 115 00:05:41,000 --> 00:05:42,810 그러나이 경우 우리의 푸시은 걸릴 것입니다 116 00:05:42,810 --> 00:05:48,540 두 개의 인수, 스택 포인터와 타입 값, 정수의 데이터 요소 117 00:05:48,540 --> 00:05:49,840 이 경우에는. 118 00:05:49,840 --> 00:05:52,100 >> 그래서 우리는 우리의 선언 s.top 0과 동일했다. 119 00:05:52,100 --> 00:05:55,969 이제 밀어 보자 스택에 수 (28). 120 00:05:55,969 --> 00:05:57,010 그럼 그게 무슨 뜻 이죠? 121 00:05:57,010 --> 00:05:59,600 그럼 현재 스택의 상단은 0입니다. 122 00:05:59,600 --> 00:06:01,350 그래서 무슨 일이 기본적이다 무슨 일이 일어날 것은 123 00:06:01,350 --> 00:06:05,820 우리는 수를 스틱거야 배열 위치 0에 (28). 124 00:06:05,820 --> 00:06:09,540 매우 간단, 오른쪽, 그 정상이었고, 지금은 갈 수 있어요. 125 00:06:09,540 --> 00:06:12,910 그리고 우리는 무엇을 변경해야 스택의 상단이 될 것입니다. 126 00:06:12,910 --> 00:06:15,130 다음 번에 ​​너무 우리는의 요소를 밀어 127 00:06:15,130 --> 00:06:18,017 우리는 그것을 저장하는거야 배열 위치, 아마 0. 128 00:06:18,017 --> 00:06:20,100 우리는 덮어 쓰기를 원하지 않을 우리는 단지 거기에 무엇을 넣어. 129 00:06:20,100 --> 00:06:23,510 그래서 우리는 단지 상위 1로 이동합니다. 130 00:06:23,510 --> 00:06:24,890 그건 아마 의미가 있습니다. 131 00:06:24,890 --> 00:06:28,940 >> 이제 우리는 다른 요소를 넣어하려는 경우 스택에, 우리는 (33)를 밀어하고 싶은 말은 132 00:06:28,940 --> 00:06:33,190 물론 지금 우리는 단지 33을거야 및 배열 위치 번호에 넣어 133 00:06:33,190 --> 00:06:37,580 (1) 다음의 상단을 변경 우리 배열 위치 두 번째로 스택. 134 00:06:37,580 --> 00:06:40,650 그래서 다음에 경우 우리는 원하는 스택에 요소를 밀어 135 00:06:40,650 --> 00:06:43,087 그것은 배열 위치 2에 넣을 수 있습니다. 136 00:06:43,087 --> 00:06:44,420 그리고 이제 그 한 번 더하자. 137 00:06:44,420 --> 00:06:45,753 우리는 스택 오프 (19)를 밀어 것입니다. 138 00:06:45,753 --> 00:06:48,940 우리는 배열 위치 2 (19)를 놓을 게요 우리의 스택의 상단을 변경 139 00:06:48,940 --> 00:06:51,220 배열 위치 3되어야한다 그래서 우리는 다음의 경우, 140 00:06:51,220 --> 00:06:54,780 우리가 갈 수 있어요 푸시를 확인해야합니다. 141 00:06:54,780 --> 00:06:56,980 >> 좋아, 그럼 그 한마디에 밀어입니다. 142 00:06:56,980 --> 00:06:57,830 무엇 터지는 어떻습니까? 143 00:06:57,830 --> 00:07:00,240 그래서 터지는는의 일종이다 추진에 대응. 144 00:07:00,240 --> 00:07:02,720 그것은 우리가 스택에서 데이터를 제거하는 방법은 다음과 같습니다. 145 00:07:02,720 --> 00:07:04,610 그리고 일반 대중의 요구에 다음을 수행합니다. 146 00:07:04,610 --> 00:07:07,600 이 포인터를 수용해야 일반적인 경우에 다시 스택. 147 00:07:07,600 --> 00:07:10,480 다른 경우에 당신은 수도 전 세계적으로 스택을 선언, 148 00:07:10,480 --> 00:07:13,910 이 경우 당신은 그것을 통과 할 필요가 없습니다 때문에 그것을 이미 액세스를 보유 149 00:07:13,910 --> 00:07:15,541 글로벌 변수로. 150 00:07:15,541 --> 00:07:17,040 그러나 다른 그 다음 우리가 어떻게해야합니까? 151 00:07:17,040 --> 00:07:21,000 그런데 우리는 증가 하였다 푸시의 스택의 상단 152 00:07:21,000 --> 00:07:24,050 그래서 우리는 아마 원하는거야 스택의 상단을 감소하기 153 00:07:24,050 --> 00:07:25,009 팝, 오른쪽? 154 00:07:25,009 --> 00:07:26,800 그리고 물론 우리는 또한 원하는거야 155 00:07:26,800 --> 00:07:29,240 우리가 제거 값을 반환합니다. 156 00:07:29,240 --> 00:07:32,125 우리는 요소를 추가하는 경우, 우리는 원하는 나중에 요소를 얻으려면, 157 00:07:32,125 --> 00:07:34,000 아마 실제로 우리 그들을 우리가 저장할 158 00:07:34,000 --> 00:07:36,490 단지에서 삭제하지 않습니다 스택 다음 그들과 함께 아무것도 할 수 없습니다. 159 00:07:36,490 --> 00:07:38,500 일반적으로 우리가하는 경우 밀고 여기 터지는 160 00:07:38,500 --> 00:07:41,250 우리는이를 저장할 의미있는 방식으로 정보 161 00:07:41,250 --> 00:07:43,250 그리고 그것은하지 않습니다 의미는 폐기합니다. 162 00:07:43,250 --> 00:07:46,380 따라서이 기능은해야 아마 우리에게 값을 반환합니다. 163 00:07:46,380 --> 00:07:51,040 >> 그래서 이것은 대중에 대한 어떤 선언이다 왼쪽 상단에이 같을 수 있습니다. 164 00:07:51,040 --> 00:07:53,870 이 함수가 반환 입력 값의 데이터. 165 00:07:53,870 --> 00:07:56,320 다시 우리는 사용하고 정수에 걸쳐. 166 00:07:56,320 --> 00:08:01,916 그리고 스택으로의 포인터를 받아 단독 인수 또는 유일한 매개 변수입니다. 167 00:08:01,916 --> 00:08:03,040 그래서 팝은 할거야? 168 00:08:03,040 --> 00:08:07,990 의 우리가 지금하고 싶은 말은하자 S 떨어져 요소를 팝업. 169 00:08:07,990 --> 00:08:14,000 그래서 스택이 마지막이다라고 기억 첫 번째 아웃, LIFO 데이터 구조에. 170 00:08:14,000 --> 00:08:17,855 어떤 요소 것은 가고있다 스택에서 제거? 171 00:08:17,855 --> 00:08:21,780 172 00:08:21,780 --> 00:08:24,150 당신은 19을 생각 했습니까? 173 00:08:24,150 --> 00:08:25,290 당신은 잘 될 것 때문입니다. 174 00:08:25,290 --> 00:08:28,836 19 우리가 추가 된 마지막 요소였다 우리가 요소를 밀어 때 스택, 175 00:08:28,836 --> 00:08:31,210 그리고 그것은 최초의 것 제거됩니다 요소입니다. 176 00:08:31,210 --> 00:08:34,780 우리가 28 말했다 것처럼, 그리고 우리는, 그 위에 (33)를 넣어 177 00:08:34,780 --> 00:08:36,659 우리는 그 위에 (19)을 넣어. 178 00:08:36,659 --> 00:08:40,650 우리가 이륙 할 수있는 유일한 요소는 19입니다. 179 00:08:40,650 --> 00:08:45,019 >> 지금 여기 그림에 내가 무슨 짓을했는지 종류의 배열에서 19 삭제됩니다. 180 00:08:45,019 --> 00:08:46,810 그건 사실이 아니에요 우리는 무엇을 할 것입니다. 181 00:08:46,810 --> 00:08:48,934 우리는 종류에가는거야 의 그것이없는 척. 182 00:08:48,934 --> 00:08:51,441 그것은 거기에 아직 그 메모리 위치, 183 00:08:51,441 --> 00:08:54,190 그러나 우리는 그냥 무시하는거야 우리의 스택의 상단을 변경하여 184 00:08:54,190 --> 00:08:56,080 3 대 2 인에서. 185 00:08:56,080 --> 00:08:58,720 우리가 있었던 경우에 따라서 지금 밀어 스택에 다른 요소, 186 00:08:58,720 --> 00:09:00,720 그것은 이상 (19)을 작성합니다. 187 00:09:00,720 --> 00:09:03,990 >> 그러나의가없는 문제를 통해 가자 스택에서 19 삭제. 188 00:09:03,990 --> 00:09:05,830 우리는 그냥이없는 척 수 있습니다. 189 00:09:05,830 --> 00:09:11,107 스택의 목적은 경우에 사라 졌어요 우리는 2 대신 3로 정상을 변경합니다. 190 00:09:11,107 --> 00:09:12,690 그래, 그게 꽤 많이했을 정도로. 191 00:09:12,690 --> 00:09:15,080 즉, 우리가해야 할 전부입니다 요소를 팝업합니다. 192 00:09:15,080 --> 00:09:16,090 이제 다시 해 보자. 193 00:09:16,090 --> 00:09:18,610 그래서 나는 여기에 빨간색을 강조했습니다 우리가 다른 통화를하고 나타냅니다. 194 00:09:18,610 --> 00:09:19,720 우리는 같은 일을 할 것입니다. 195 00:09:19,720 --> 00:09:20,803 >> 그래서 무슨 일이 일어날? 196 00:09:20,803 --> 00:09:23,670 음, 우리는 저장거야 X 33과 우리는거야 197 00:09:23,670 --> 00:09:26,217 1 스택의 상단을 변경합니다. 198 00:09:26,217 --> 00:09:29,050 우리가 밀어 지금이라면 있도록 우리가있어 스택에 요소 199 00:09:29,050 --> 00:09:31,610 지금 할 거, 무슨 일이 일어날 것 200 00:09:31,610 --> 00:09:36,367 우리는 덮어 쓰기려고하고있다 배열 위치 번호 1. 201 00:09:36,367 --> 00:09:38,950 종류의 왼쪽 된 그 33 있도록 그 뒤에 우리는 단지 척 202 00:09:38,950 --> 00:09:44,390 더 이상 거기, 우리는거야 그것을 소지품 대신 거기에 40을 넣어. 203 00:09:44,390 --> 00:09:46,290 그리고 물론, 우리가 푸시를 만든 이후, 204 00:09:46,290 --> 00:09:48,780 우리는을 증가거야 1-2 스택 맨 205 00:09:48,780 --> 00:09:50,950 그래서 우리는 지금 추가하는 경우 그 다른 요소는거야 206 00:09:50,950 --> 00:09:54,700 배열 위치 두 번째로 이동합니다. 207 00:09:54,700 --> 00:09:57,590 >> 이제 연결리스트는 또 다른입니다 스택을 구현하는 방법. 208 00:09:57,590 --> 00:10:01,210 그리고에이 정의 경우 화면은 여기, 당신에게 익숙 209 00:10:01,210 --> 00:10:04,260 거의 보인다 때문입니다 똑같은 사실, 210 00:10:04,260 --> 00:10:07,790 그것은 거의 정확하게이다 단일 연결리스트와 같은, 211 00:10:07,790 --> 00:10:11,990 당신은 우리의 토론에서 기억하는 경우 단독으로 다른 비디오 목록을 연결. 212 00:10:11,990 --> 00:10:15,510 여기에 유일한 제한 프로그래머로서 우리를 위해입니다 213 00:10:15,510 --> 00:10:17,900 우리는 허용하지 않을 삽입하거나 임의로 삭제 214 00:10:17,900 --> 00:10:20,620 단일 연결 목록에서 우리가 이전 할 수있다. 215 00:10:20,620 --> 00:10:25,820 우리는 지금 삽입에서 삭제할 수 있습니다 전면 또는 링크의 상단 216 00:10:25,820 --> 00:10:26,320 목록. 217 00:10:26,320 --> 00:10:28,028 그것은 정말로 단지이다 차이가 있지만. 218 00:10:28,028 --> 00:10:29,700 이것은 달리 단일 연결 목록입니다. 219 00:10:29,700 --> 00:10:32,060 그것은 단지 제한있어 자신에 교체 220 00:10:32,060 --> 00:10:35,770 프로그래머로서 그 스택으로 변경됩니다. 221 00:10:35,770 --> 00:10:39,280 >> 여기서 규칙은 항상 유지하는 것이다 연결리스트의 헤드 포인터. 222 00:10:39,280 --> 00:10:41,520 물론 이것은 일반적이다 첫 번째 중요한 규칙. 223 00:10:41,520 --> 00:10:44,260 단독으로 당신에게 목록을 어쨌든 연결을 위해 오직 헤드 포인터를 필요 224 00:10:44,260 --> 00:10:46,160 것을 갖기 위해 체인은 참조 할 수 225 00:10:46,160 --> 00:10:48,596 다른 모든 요소에 링크 된 목록. 226 00:10:48,596 --> 00:10:50,470 그러나 특히이다 스택 중요합니다. 227 00:10:50,470 --> 00:10:52,386 그래서 일반적으로 당신이있어 실제로 원하는 것 228 00:10:52,386 --> 00:10:54,090 이 포인터는 글로벌 변수가 될 수 있습니다. 229 00:10:54,090 --> 00:10:56,574 그것은 아마 것 더 쉽게 그 방법이 될 수. 230 00:10:56,574 --> 00:10:58,240 그래서 푸시와 팝의 유사체는 무엇인가? 231 00:10:58,240 --> 00:10:58,740 권리. 232 00:10:58,740 --> 00:11:01,812 그래서 다시 밀어 추가하고있다 스택에 새로운 요소입니다. 233 00:11:01,812 --> 00:11:03,770 링크 된 목록에서 그 우리가 할 겁니다 의미 234 00:11:03,770 --> 00:11:07,770 우리가있어 새 노드를 만들 수 있습니다 링크 된 목록에 추가 할 것, 235 00:11:07,770 --> 00:11:10,500 다음주의 단계를 수행 우리는 이전에 설명했다고 236 00:11:10,500 --> 00:11:16,050 단일 연결 목록에 그것을 추가하려면 체인을 깨지 않고 체인 237 00:11:16,050 --> 00:11:18,900 및 손실 또는 orphaning 연결리스트의 요소. 238 00:11:18,900 --> 00:11:21,820 그리고 기본적으로 무슨이다 텍스트의 작은 덩어​​리가 요약되어 있습니다. 239 00:11:21,820 --> 00:11:23,740 그리고 이제 살펴 보자 다이어그램으로는시. 240 00:11:23,740 --> 00:11:24,823 >> 그래서 여기에 우리의 링크 목록입니다. 241 00:11:24,823 --> 00:11:26,620 그것은 동시에 네 개의 요소가 포함되어 있습니다. 242 00:11:26,620 --> 00:11:30,420 그리고 더 완벽하게 여기에 우리의있어 네 가지 요소를 포함하는 스택. 243 00:11:30,420 --> 00:11:36,030 그리고 이제 우리가 지금하고 싶은 말은하자 이 스택에 새로운 항목을 누릅니다. 244 00:11:36,030 --> 00:11:39,792 그리고 우리는 새로운 밀어 싶어 그 데이터 값 항목은 12입니다. 245 00:11:39,792 --> 00:11:41,000 그런데 우리가 무슨 말을하는 건가요? 246 00:11:41,000 --> 00:11:43,420 그럼 먼저 우리는 갈거야 동적 malloc에​​ 공간, 247 00:11:43,420 --> 00:11:45,411 새 노드에 대한 공간을 할당합니다. 248 00:11:45,411 --> 00:11:48,160 그리고 물론 직후 우리는 항상 우리를 malloc을하기 위해 전화를 걸 249 00:11:48,160 --> 00:11:52,989 , 널 (null)를 확인해야합니다 우리가 널 가지고있는 경우 때문에 250 00:11:52,989 --> 00:11:54,280 문제의 어떤 종류가 있었다. 251 00:11:54,280 --> 00:11:57,570 우리는 널 역 참조하지 않으려는 포인터 또는 당신은 SEG 오류를 겪게 될 것이다. 252 00:11:57,570 --> 00:11:58,510 그 좋지 않다. 253 00:11:58,510 --> 00:11:59,760 그래서 우리는 노드의 malloc으로 할당했습니다. 254 00:11:59,760 --> 00:12:01,260 우리는 우리가 여기에 성공 했어 가정합니다. 255 00:12:01,260 --> 00:12:06,090 우리는로 (12)를 넣어거야 해당 노드의 데이터 필드. 256 00:12:06,090 --> 00:12:11,570 지금 당신은 기억합니까 우리의 포인터의 어느 그래서 우리는 체인을 중단하지 않는 다음 이동? 257 00:12:11,570 --> 00:12:15,100 우리는 여기에 몇 가지 옵션을 가지고 있지만 안전 할 것 하나 258 00:12:15,100 --> 00:12:19,330 포인터 다음에 뉴스를 설정하는 것입니다 목록의 이전 머리에 포인트 259 00:12:19,330 --> 00:12:21,360 또는 곧 될 것입니다 무엇 목록의 이전 머리. 260 00:12:21,360 --> 00:12:23,610 그리고 지금의 모든 것을 우리의 요소는 서로 연결되어, 261 00:12:23,610 --> 00:12:27,370 우리는 단지 가리 목록을 이동할 수 있습니다 새가하는 같은 장소에. 262 00:12:27,370 --> 00:12:33,550 그리고 우리는 지금 효과적으로 추진해 왔습니다 스택의 전면 상에 새로운 요소. 263 00:12:33,550 --> 00:12:36,420 >> 우리 팝 단지 원하는 그 첫 번째 요소를 삭제합니다. 264 00:12:36,420 --> 00:12:38,150 그래서 기본적으로 무엇을 우리는 여기에서해야 할 265 00:12:38,150 --> 00:12:40,050 물론 우리는 두 번째 요소를 찾을 수있다. 266 00:12:40,050 --> 00:12:43,540 결국 그 새로운 될 것 우리는 첫 번째를 삭제 한 후 머리. 267 00:12:43,540 --> 00:12:47,300 그래서 우리는 단지에서 시작해야 시작은, 하나 앞으로 이동합니다. 268 00:12:47,300 --> 00:12:50,340 우리는 하나 파악을했으면 여기서 우리의 앞으로 현재 269 00:12:50,340 --> 00:12:53,850 우리가 안전하게 첫 번째를 삭제할 수 있습니다 다음 우리는 단지 머리를 이동할 수 있습니다 270 00:12:53,850 --> 00:12:57,150 무엇을 가리 키도록 이제 다음 두 번째 항과 271 00:12:57,150 --> 00:12:59,170 그 후 첫 번째입니다 노드가 삭제되었습니다. 272 00:12:59,170 --> 00:13:01,160 >> 그래서 다시 살펴 본다 그것에 다이어그램으로 우리 273 00:13:01,160 --> 00:13:05,022 지금 팝업 할 이 스택의 오프 요소입니다. 274 00:13:05,022 --> 00:13:05,730 그래서 우리는 무엇을해야합니까? 275 00:13:05,730 --> 00:13:08,188 그럼 우리가 처음 만들거야 무슨 새로운 포인터 276 00:13:08,188 --> 00:13:10,940 머리와 동일한 지점을 가리 키도록. 277 00:13:10,940 --> 00:13:13,790 우리는 그것을 하나의 위치를​​ 이동거야 앞으로 TRAV의 등호를 말하여 278 00:13:13,790 --> 00:13:17,510 예를 들어 다음 트래비스하는 TRAV 포인터를 전진 것이다 279 00:13:17,510 --> 00:13:19,324 앞으로 위치. 280 00:13:19,324 --> 00:13:21,240 지금 우리가 가지고있는 첫 번째 요소에 개최 281 00:13:21,240 --> 00:13:24,573 포인터라는 목록 및 관통 라는 포인터를 통해 두 번째 요소 282 00:13:24,573 --> 00:13:28,692 TRAV, 우리는 안전하게 그것을 삭제할 수 있습니다 스택에서 첫 번째 요소 283 00:13:28,692 --> 00:13:30,650 나머지를 잃지 않고 체인의 우리 때문에 284 00:13:30,650 --> 00:13:32,358 참조하는 방법이 두 번째 요소에 285 00:13:32,358 --> 00:13:34,780 의 방법에 의해 전달 포인터 TRAV을했다. 286 00:13:34,780 --> 00:13:37,100 >> 그래서 지금 우리는 그 노드를 확보 할 수 있습니다. 287 00:13:37,100 --> 00:13:38,404 우리는 목록을 확보 할 수 있습니다. 288 00:13:38,404 --> 00:13:41,320 그리고 우리가 지금 할 필요가있다 같은 장소에 지점으로 목록으로 이동 289 00:13:41,320 --> 00:13:44,482 그 TRAV는 않습니다, 우리는 뒷면의 일종이야 우리는 (12)을 밀어 전에 우리가 시작했던 곳 290 00:13:44,482 --> 00:13:45,690 처음에에 오른쪽. 291 00:13:45,690 --> 00:13:46,940 우리가 있었던 곳은 정확히이다. 292 00:13:46,940 --> 00:13:48,840 우리는이 네 가지 요소 스택을했다. 293 00:13:48,840 --> 00:13:49,690 우리는 다섯 번째를 추가했습니다. 294 00:13:49,690 --> 00:13:51,910 우리는 다섯 번째를 밀어 요소에, 그리고 우리 295 00:13:51,910 --> 00:13:55,980 팝이 가장 최근에 백 오프 요소를 추가했다. 296 00:13:55,980 --> 00:13:58,816 >> 즉 거의 정말 모든 스택을 할 수있다. 297 00:13:58,816 --> 00:14:00,190 당신은 배열로 구현할 수 있습니다. 298 00:14:00,190 --> 00:14:01,815 당신은 연결리스트로 구현할 수 있습니다. 299 00:14:01,815 --> 00:14:04,810 다른 하나는, 물론있다 방법뿐만 아니라이를 구현합니다. 300 00:14:04,810 --> 00:14:09,060 우리가 사용하는 것이 기본적 이유 스택은 이러한 방식으로 데이터를 유지하는 것이다 301 00:14:09,060 --> 00:14:12,090 가장 최근에 추가하는 요소는 우리가있어 제일 먼저 302 00:14:12,090 --> 00:14:14,980 돌아 가야 할 것. 303 00:14:14,980 --> 00:14:17,900 내가 더그 로이드 해요,이 CS50입니다. 304 00:14:17,900 --> 00:14:19,926