در این مطلب، ویدئو ساختارهای داده در پایتون – دوره کامل برای مبتدیان با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 5:48:36
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:01,300 –> 00:00:09,840
[موسیقی]
2
00:00:09,840 –> 00:00:11,280
سلام به همه
3
00:00:11,280 –> 00:00:13,840
اکنون ما قصد داریم یک دوره جدید را شروع کنیم
4
00:00:13,840 –> 00:00:16,960
ساختارهای داده در پایتون اساساً
5
00:00:16,960 –> 00:00:18,640
ما داده های زیادی را پیاده سازی خواهیم کرد
6
00:00:18,640 –> 00:00:21,359
ساختارهایی مانند صف های پشته به هم مرتبط هستند
7
00:00:21,359 –> 00:00:23,920
درختان باینری و بسیاری دیگر را فهرست می کند
8
00:00:23,920 –> 00:00:26,000
ساختارهای داده نیز
9
00:00:26,000 –> 00:00:28,400
و ما قصد داریم همه آنها را اجرا کنیم
10
00:00:28,400 –> 00:00:30,800
این ساختارهای داده در پایتون
11
00:00:30,800 –> 00:00:31,599
بنابراین
12
00:00:31,599 –> 00:00:33,600
تمام فیلم ها در ساختار داده ها خواهد بود
13
00:00:33,600 –> 00:00:36,079
مثل اول باشید توضیح خواهم داد که چیست
14
00:00:36,079 –> 00:00:38,960
کاربردهای آن داده خاص
15
00:00:38,960 –> 00:00:41,280
ساختار و سپس در نهایت ما می رویم
16
00:00:41,280 –> 00:00:43,440
برای پیاده سازی در برنامه نویسی پایتون
17
00:00:43,440 –> 00:00:45,840
زبان بنابراین در این آموزش ما فقط
18
00:00:45,840 –> 00:00:47,200
قصد دارم به
19
00:00:47,200 –> 00:00:50,320
به خوبی از آنچه هست آگاه شوید
20
00:00:50,320 –> 00:00:52,320
ساختار داده و چرا به آن نیاز داریم
21
00:00:52,320 –> 00:00:53,760
ساختار داده ها
22
00:00:53,760 –> 00:00:55,600
و از آموزش بعدی به بعد ما
23
00:00:55,600 –> 00:00:57,840
با اولین ساختار داده ما شروع خواهد شد
24
00:00:57,840 –> 00:00:59,359
که هست
25
00:00:59,359 –> 00:01:02,800
ساختار داده پشته
26
00:01:02,800 –> 00:01:05,680
و ما آن را در پایتون پیاده سازی خواهیم کرد
27
00:01:05,680 –> 00:01:07,760
پس بیایید با ساختارهای داده شروع کنیم
28
00:01:07,760 –> 00:01:09,920
ساختار داده دقیقا چیست و
29
00:01:09,920 –> 00:01:11,439
چه نیازی به آنها داریم
30
00:01:11,439 –> 00:01:13,600
بنابراین اساساً ما می دانیم که همه ما آن را می دانیم
31
00:01:13,600 –> 00:01:16,080
تمامی زبان های برنامه نویسی از جمله
32
00:01:16,080 –> 00:01:19,360
c plus plus java python همگی کار می کنند
33
00:01:19,360 –> 00:01:23,920
با یک چیز مشترک که داده است
34
00:01:23,920 –> 00:01:26,000
بنابراین داده ها می توانند به شکل برخی باشند
35
00:01:26,000 –> 00:01:29,119
متغیرهای ثابت مانند این
36
00:01:29,119 –> 00:01:32,400
یا در برخی فایل ها ذخیره می شود
37
00:01:32,400 –> 00:01:35,520
بنابراین آنچه اتفاق می افتد بیشتر از
38
00:01:35,520 –> 00:01:39,680
زبان های برنامه نویسی که اجرا می کنند
39
00:01:39,680 –> 00:01:42,720
عملیات روی این داده ها
40
00:01:42,720 –> 00:01:45,439
بنابراین من قصد دارم عملیات اجرایی را بنویسم
41
00:01:45,439 –> 00:01:48,479
روی این داده ها
42
00:01:48,479 –> 00:01:51,439
بنابراین فکر می کنید چه عملیاتی می تواند باشد
43
00:01:51,439 –> 00:01:54,479
بر روی داده ها انجام شود بنابراین اولین
44
00:01:54,479 –> 00:01:57,920
و بسیار مهم درج است
45
00:01:57,920 –> 00:01:59,439
بنابراین
46
00:01:59,439 –> 00:02:02,719
ما در واقع می توانیم برخی از داده ها را وارد کنیم
47
00:02:02,719 –> 00:02:03,520
درست
48
00:02:03,520 –> 00:02:08,239
مورد دوم حذف اطلاعات است
49
00:02:08,239 –> 00:02:10,560
حذف داده ها
50
00:02:10,560 –> 00:02:11,599
و
51
00:02:11,599 –> 00:02:14,160
به روز رسانی داده ها
52
00:02:14,160 –> 00:02:16,319
و به طور مشابه می تواند موارد بیشتری وجود داشته باشد
53
00:02:16,319 –> 00:02:19,200
عملیاتی مانند جستجو
54
00:02:19,200 –> 00:02:21,920
بنابراین یک چیز مهم در مورد داده است
55
00:02:21,920 –> 00:02:22,720
که
56
00:02:22,720 –> 00:02:25,920
یک داده می تواند در یک ردیف فرمت خام درست باشد
57
00:02:25,920 –> 00:02:28,480
می تواند یک داده خام باشد
58
00:02:28,480 –> 00:02:32,080
بنابراین به منظور پردازش داده های خام آن است
59
00:02:32,080 –> 00:02:35,519
پردازش صحیح داده های خام بسیار دشوار است
60
00:02:35,519 –> 00:02:38,480
بنابراین کاری که ما انجام می دهیم این است که در واقع برخی از آنها را می سازیم
61
00:02:38,480 –> 00:02:40,080
سازه های
62
00:02:40,080 –> 00:02:42,959
و این ساختارها به ما کمک می کنند
63
00:02:42,959 –> 00:02:45,599
انجام این عملیات
64
00:02:45,599 –> 00:02:48,400
به موثرترین روش
65
00:02:48,400 –> 00:02:49,200
بنابراین
66
00:02:49,200 –> 00:02:50,480
اگر صحبت کنیم
67
00:02:50,480 –> 00:02:52,959
داده هایی که ما انجام می دهیم به عنوان مثال در یک است
68
00:02:52,959 –> 00:02:54,800
درخت دودویی ما
69
00:02:54,800 –> 00:02:57,280
فرض کنید من داده ای دارم
70
00:02:57,280 –> 00:03:00,159
من تعدادی شماره در اینجا دارم
71
00:03:00,159 –> 00:03:01,840
اکنون می توانید ببینید که این اعداد فقط هستند
72
00:03:01,840 –> 00:03:02,800
داده ها
73
00:03:02,800 –> 00:03:05,519
حالا اگر این اعداد را بگذارم بیایید
74
00:03:05,519 –> 00:03:07,920
فرض کنید در یک آرایه
75
00:03:07,920 –> 00:03:10,959
چیزی مثل این
76
00:03:12,400 –> 00:03:13,680
درست
77
00:03:13,680 –> 00:03:15,280
تا بتوانم فشار بیاورم
78
00:03:15,280 –> 00:03:18,159
یا برخی از عناصر را در این داده ها درج کنید
79
00:03:18,159 –> 00:03:19,440
ساختار
80
00:03:19,440 –> 00:03:20,879
من حتی می توانم
81
00:03:20,879 –> 00:03:23,280
سعی کنید برخی از مقادیر را در این داده ها به روز کنید
82
00:03:23,280 –> 00:03:24,400
ساختار
83
00:03:24,400 –> 00:03:26,400
اکنون ساختارهای داده بسیار زیادی وجود دارد
84
00:03:26,400 –> 00:03:27,680
در دسترس
85
00:03:27,680 –> 00:03:29,920
و دلیل این تعداد زیاد
86
00:03:29,920 –> 00:03:32,959
ساختار داده های مختلف است که
87
00:03:32,959 –> 00:03:35,040
هنگامی که شما ساختار را تغییر می دهید
88
00:03:35,040 –> 00:03:36,239
داده ها
89
00:03:36,239 –> 00:03:38,720
بنابراین هزینه عملیات
90
00:03:38,720 –> 00:03:41,519
هزینه عملیات و ما و زمانی که ما
91
00:03:41,519 –> 00:03:43,599
ما در مورد هزینه صحبت می کنیم
92
00:03:43,599 –> 00:03:44,840
صحبت کردن در مورد
93
00:03:44,840 –> 00:03:46,799
زمان به دلیل
94
00:03:46,799 –> 00:03:49,040
زمان پردازش بسیار مهم است
95
00:03:49,040 –> 00:03:50,080
نقش در
96
00:03:50,080 –> 00:03:52,720
در کامپیوتر و برنامه نویسی
97
00:03:52,720 –> 00:03:55,120
زبان هایی که همیشه سعی می کنیم بنویسیم
98
00:03:55,120 –> 00:03:57,519
الگوریتم ها و
99
00:03:57,519 –> 00:04:00,480
ما همچنین از برخی ساختارهای داده و
100
00:04:00,480 –> 00:04:02,640
این ساختارهای داده باید بگیرند
101
00:04:02,640 –> 00:04:04,480
کمترین زمان ممکن
102
00:04:04,480 –> 00:04:06,480
تا بتوانیم اینها را عملی کنیم
103
00:04:06,480 –> 00:04:09,519
عملیات بدون دادن مقداری سربار
104
00:04:09,519 –> 00:04:11,599
به پردازنده
105
00:04:11,599 –> 00:04:14,560
بنابراین هر زمان که ما داده های زیادی داریم
106
00:04:14,560 –> 00:04:16,720
ساختارهایی مانند پشته
107
00:04:16,720 –> 00:04:18,720
لیست پیوندی
108
00:04:18,720 –> 00:04:20,798
در مورد همه آنها مطالعه خواهیم کرد
109
00:04:20,798 –> 00:04:23,360
جزئیات و ما نیز آنها را اجرا خواهیم کرد
110
00:04:23,360 –> 00:04:25,840
و به طور مشابه هش درختان باینری داریم
111
00:04:25,840 –> 00:04:26,960
جداول
112
00:04:26,960 –> 00:04:28,560
و غیره
113
00:04:28,560 –> 00:04:30,639
حالا دلیل اینکه ما همه آنها را داریم
114
00:04:30,639 –> 00:04:31,919
است زیرا
115
00:04:31,919 –> 00:04:34,720
در برخی از ساختارهای داده درج
116
00:04:34,720 –> 00:04:36,400
عملیات طول می کشد
117
00:04:36,400 –> 00:04:39,680
پیچیدگی زمانی کمتر در برخی موارد
118
00:04:39,680 –> 00:04:42,160
به روز رسانی پیچیدگی زمان کمتری را می طلبد
119
00:04:42,160 –> 00:04:44,400
به طور مشابه ما برخی عملیات جستجو را داریم
120
00:04:44,400 –> 00:04:45,440
همچنین
121
00:04:45,440 –> 00:04:48,240
بنابراین جستجو
122
00:04:48,240 –> 00:04:51,600
بنابراین در برخی موارد در برخی از ساختارهای داده
123
00:04:51,600 –> 00:04:52,960
ما داریم
124
00:04:52,960 –> 00:04:55,919
جستجو و هزینه یا زمان صرف شده
125
00:04:55,919 –> 00:04:58,000
توسط ساختار داده
126
00:04:58,000 –> 00:04:58,720
به
127
00:04:58,720 –> 00:05:00,639
انجام جستجوی برخی خاص
128
00:05:00,639 –> 00:05:03,440
عنصر بسیار ساده تر و خواهد بود
129
00:05:03,440 –> 00:05:04,800
زمان کمتری بگیرید
130
00:05:04,800 –> 00:05:06,720
بنابراین ما در مورد این نوع داده ها بحث خواهیم کرد
131
00:05:06,720 –> 00:05:10,080
ساختارها و اساساً ساختارهای داده
132
00:05:10,080 –> 00:05:11,039
هستند
133
00:05:11,039 –> 00:05:15,120
سازه های مورد استفاده
134
00:05:15,199 –> 00:05:18,960
سازه های مورد استفاده
135
00:05:21,520 –> 00:05:23,120
به
136
00:05:23,120 –> 00:05:25,520
ساختار داده یا
137
00:05:25,520 –> 00:05:28,639
سازماندهی داده ها
138
00:05:29,680 –> 00:05:31,360
سازماندهی داده ها
139
00:05:31,360 –> 00:05:33,759
به شکل یک ساختار
140
00:05:33,759 –> 00:05:39,560
و چرا داده ها را سازماندهی می کنیم زیرا
141
00:05:40,080 –> 00:05:41,440
به
142
00:05:41,440 –> 00:05:46,240
کاهش هزینه یا کاهش
143
00:05:46,240 –> 00:05:51,160
زمان صرف شده زمان پردازش
144
00:05:52,639 –> 00:05:56,160
درست است پس هدف اصلی ما همین است
145
00:05:56,160 –> 00:05:59,680
اوه انتخاب درستی از ساختار داده
146
00:05:59,680 –> 00:06:02,000
به عنوان مثال برای عملیات های مختلف
147
00:06:02,000 –> 00:06:03,120
بیایید بگوییم
148
00:06:03,120 –> 00:06:07,840
اوه یک شرکت وجود دارد مثلاً گوگل
149
00:06:08,160 –> 00:06:10,400
و ما می دانیم که همه می دانیم که گوگل دارد
150
00:06:10,400 –> 00:06:12,000
یک نوار جستجو
151
00:06:12,000 –> 00:06:13,199
درست است
152
00:06:13,199 –> 00:06:15,120
اکثر عملیات هایی که هستند
153
00:06:15,120 –> 00:06:16,960
انجام
154
00:06:16,960 –> 00:06:19,600
عملیات جستجو است
155
00:06:19,600 –> 00:06:22,319
در آن سناریو شما می دانید که وجود دارد
156
00:06:22,319 –> 00:06:25,600
میلیون ها رکورد یا مقدار بسیار زیاد
157
00:06:25,600 –> 00:06:27,600
از داده هایی که گوگل دارد
158
00:06:27,600 –> 00:06:30,160
بنابراین به منظور انجام جستجو
159
00:06:30,160 –> 00:06:31,039
ما
160
00:06:31,039 –> 00:06:33,199
نیاز داریم یا نیاز داریم
161
00:06:33,199 –> 00:06:35,759
برخی از ساختار داده ها که کاهش می یابد
162
00:06:35,759 –> 00:06:39,759
پیچیدگی زمانی را ما این امتیاز می نامیم
163
00:06:39,759 –> 00:06:44,160
هزینه به عنوان پیچیدگی زمانی
164
00:06:47,680 –> 00:06:49,280
درست است
165
00:06:49,280 –> 00:06:51,919
بنابراین عملیات جستجو باید انجام شود
166
00:06:51,919 –> 00:06:54,880
پیچیدگی زمان کمتر و و این
167
00:06:54,880 –> 00:06:57,440
دلیل اصلی این است که ما داده هایی داریم
168
00:06:57,440 –> 00:06:59,840
هیچ ساختار داده ای که بتواند
169
00:06:59,840 –> 00:07:03,360
تمام این عملیات را در O بزرگ انجام دهید
170
00:07:03,360 –> 00:07:05,280
یک بار
171
00:07:05,280 –> 00:07:06,880
درست است
172
00:07:06,880 –> 00:07:09,360
بسیاری از ساختارهای داده وجود دارد که
173
00:07:09,360 –> 00:07:11,599
خواهد شد که برای بهینه سازی شده اند
174
00:07:11,599 –> 00:07:13,759
جستجو برای برخی از آنها بهینه شده است
175
00:07:13,759 –> 00:07:15,280
درج ها
176
00:07:15,280 –> 00:07:16,560
و غیره
177
00:07:16,560 –> 00:07:17,759
بنابراین
178
00:07:17,759 –> 00:07:19,680
از آموزش بعدی به بعد خواهیم بود
179
00:07:19,680 –> 00:07:20,800
شروع کنید
180
00:07:20,800 –> 00:07:23,440
با ساختار داده پشته
181
00:07:23,440 –> 00:07:26,160
ابتدا بحث خواهیم کرد که یک پشته ما چیست
182
00:07:26,160 –> 00:07:27,520
خواهد دید که چگونه
183
00:07:27,520 –> 00:07:31,199
سازماندهی می کند و داده ها را سازماندهی می کند
184
00:07:31,199 –> 00:07:33,360
و سپس در برنامه نویسی پایتون هستیم
185
00:07:33,360 –> 00:07:34,479
قصد دارم به
186
00:07:34,479 –> 00:07:37,680
آن را اجرا کنید، بنابراین اولین چیز این است که اگر شما
187
00:07:37,680 –> 00:07:38,720
نداشته اند
188
00:07:38,720 –> 00:07:41,039
پایتون را مطالعه کرد
189
00:07:41,039 –> 00:07:43,440
من دوره پایتون را نیز دارم
190
00:07:43,440 –> 00:07:46,080
لینک لیست پخش پایتون را بدهید
191
00:07:46,080 –> 00:07:48,240
توضیحات زیر یا وارد خواهد شد
192
00:07:48,240 –> 00:07:51,320
یک دکمه i در اینجا
193
00:07:51,320 –> 00:07:55,759
[موسیقی]
194
00:07:55,759 –> 00:07:57,360
بنابراین اولین ساختار داده ای که ما هستیم
195
00:07:57,360 –> 00:08:00,319
بحث در مورد داده های پشته است
196
00:08:00,319 –> 00:08:01,520
ساختار
197
00:08:01,520 –> 00:08:04,319
بنابراین اساساً از ساختارهای داده استفاده می شود
198
00:08:04,319 –> 00:08:06,960
شکلی به داده ها بدهید
199
00:08:06,960 –> 00:08:09,360
و با دادن برخی خواص به
200
00:08:09,360 –> 00:08:12,240
داده ها می توانیم از آنها ساختارهایی تشکیل دهیم
201
00:08:12,240 –> 00:08:14,160
اکنون با استفاده از این ساختارها می توانیم یک
202
00:08:14,160 –> 00:08:16,800
بسیاری از عملیات بر روی آنها
203
00:08:16,800 –> 00:08:19,280
که اساسا در بسیاری از موارد به ما کمک خواهد کرد
204
00:08:19,280 –> 00:08:20,720
برنامه های کاربردی
205
00:08:20,720 –> 00:08:22,240
پس بیایید با داده های پشته شروع کنیم
206
00:08:22,240 –> 00:08:23,520
ساختار
207
00:08:23,520 –> 00:08:25,360
بنابراین اولین ویژگی که پشته است
208
00:08:25,360 –> 00:08:27,840
ساختار داده تعریف می کند برگ است
209
00:08:27,840 –> 00:08:30,639
دارایی که آخرین اولین خروجی است
210
00:08:30,639 –> 00:08:33,120
ویژگی که ساختار را تعریف می کند
211
00:08:33,120 –> 00:08:34,320
داده
212
00:08:34,320 –> 00:08:36,799
بنابراین من می خواهم یک فیلم انیمیشن را نشان دهم
213
00:08:36,799 –> 00:08:38,640
از چگونگی
214
00:08:38,640 –> 00:08:40,799
برای تجسم ساختار داده پشته از
215
00:08:40,799 –> 00:08:43,519
عملیات درج و حذف چگونه است
216
00:08:43,519 –> 00:08:45,200
انجام شده در
217
00:08:45,200 –> 00:08:47,200
ساختار داده پشته
218
00:08:47,200 –> 00:08:49,440
بنابراین آخرین و اولین خروج به این معنی است که
219
00:08:49,440 –> 00:08:51,040
آخرین عنصر
220
00:08:51,040 –> 00:08:53,440
که داخل داده های پشته می رود
221
00:08:53,440 –> 00:08:54,480
ساختار
222
00:08:54,480 –> 00:08:57,360
قرار است به اولین عنصر تبدیل شود
223
00:08:57,360 –> 00:08:59,920
از ساختار داده خارج شود
224
00:08:59,920 –> 00:09:02,399
ما عمدتا عملیات درج یا
225
00:09:02,399 –> 00:09:04,240
عملیات درج عنصر در
226
00:09:04,240 –> 00:09:07,600
پشته ساختار داده به عنوان یک عملیات فشار
227
00:09:07,600 –> 00:09:10,720
و حذف عنصر یا حذف است
228
00:09:10,720 –> 00:09:12,800
معروف به عملیات پاپ
229
00:09:12,800 –> 00:09:14,320
پس بیایید ببینیم که چگونه داده های پشته
230
00:09:14,320 –> 00:09:16,080
ساختار درج و
231
00:09:16,080 –> 00:09:18,000
حذف و سپس ما به
232
00:09:18,000 –> 00:09:20,240
این را در برنامه نویسی پایتون پیاده کنید
233
00:09:20,240 –> 00:09:23,040
زبان و من از پایتون نسخه 3 استفاده خواهم کرد
234
00:09:23,040 –> 00:09:24,959
برای اجرای این کل
235
00:09:24,959 –> 00:09:27,200
ساختار داده ها
236
00:09:27,200 –> 00:09:29,120
پس اول از همه بیایید در نظر بگیریم که ما
237
00:09:29,120 –> 00:09:31,360
برخی از عناصر وجود دارد، فرض کنید 3 است
238
00:09:31,360 –> 00:09:33,600
اولین عنصری که دارم
239
00:09:33,600 –> 00:09:34,560
سپس
240
00:09:34,560 –> 00:09:35,600
8
241
00:09:35,600 –> 00:09:36,480
نه
242
00:09:36,480 –> 00:09:38,880
و پنج پس فرض کنید این چهار را داریم
243
00:09:38,880 –> 00:09:39,839
داده ها
244
00:09:39,839 –> 00:09:43,440
و حالا بیایید بگوییم من یک پشته در اینجا دارم
245
00:09:43,440 –> 00:09:44,959
در این پشته کاری که ما می خواهیم انجام دهیم این است
246
00:09:44,959 –> 00:09:46,880
ما می خواهیم عناصر یک را وارد کنیم
247
00:09:46,880 –> 00:09:48,000
توسط یکی
248
00:09:48,000 –> 00:09:50,000
اول از همه ما عنصر را انتخاب می کنیم
249
00:09:50,000 –> 00:09:51,040
سه
250
00:09:51,040 –> 00:09:53,839
اکنون این عنصر را در قسمت وارد می کنیم
251
00:09:53,839 –> 00:09:55,680
پشته
252
00:09:55,680 –> 00:09:58,480
عنصر بعدی که انتخاب می کنیم هشت است
253
00:09:58,480 –> 00:10:00,959
و سپس آن را در پشته قرار می دهیم
254
00:10:00,959 –> 00:10:03,120
و به طور مشابه ما قصد داریم آن را با
255
00:10:03,120 –> 00:10:05,200
9 و 5 نیز
256
00:10:05,200 –> 00:10:07,519
بنابراین به این ترتیب عناصر را فشار می دهیم
257
00:10:07,519 –> 00:10:08,800
در پشته
258
00:10:08,800 –> 00:10:10,480
حالا فرض کنید می خواهیم اجرا کنیم
259
00:10:10,480 –> 00:10:12,640
عملیات حذف
260
00:10:12,640 –> 00:10:15,200
بنابراین بیایید فرض کنیم می خواهیم آن را حذف کنیم
261
00:10:15,200 –> 00:10:17,360
عنصر 8 از پشته
262
00:10:17,360 –> 00:10:19,519
حالا قانون می گوید که آخرین عنصر
263
00:10:19,519 –> 00:10:22,160
که داخل پشته می رود فقط می تواند بیاید
264
00:10:22,160 –> 00:10:23,360
بیرون
265
00:10:23,360 –> 00:10:25,440
بنابراین در این ساختار داده اگر بخواهیم
266
00:10:25,440 –> 00:10:28,320
عنصر 8 را که نمی توانیم مستقیماً حذف کنیم
267
00:10:28,320 –> 00:10:30,959
انجام دهید که ابتدا باید آن را حذف کنیم
268
00:10:30,959 –> 00:10:32,399
عناصری که هستند
269
00:10:32,399 –> 00:10:35,279
در بالای آن بنابراین مرحله یک است
270
00:10:35,279 –> 00:10:37,680
بیرون آمدن عنصر پنج
271
00:10:37,680 –> 00:10:39,680
بنابراین ما عنصر را از قسمت بیرون می آوریم
272
00:10:39,680 –> 00:10:40,880
پشته
273
00:10:40,880 –> 00:10:43,200
سپس عنصر بعدی نه است که می باشد
274
00:10:43,200 –> 00:10:45,839
در بالای هشت، بنابراین ما 9 را حذف می کنیم
275
00:10:45,839 –> 00:10:46,800
همچنین
276
00:10:46,800 –> 00:10:49,680
و اکنون از آنجایی که ما می توانیم ببینیم که 8th
277
00:10:49,680 –> 00:10:52,160
عنصر در بالای پشته ما قرار دارد
278
00:10:52,160 –> 00:10:53,760
اکنون می توانید حذف کنید
279
00:10:53,760 –> 00:10:56,320
عنصر 8 و در نهایت ما دوباره
280
00:10:56,320 –> 00:10:58,880
عقب راندن 9
281
00:10:58,880 –> 00:11:00,399
و پنج
282
00:11:00,399 –> 00:11:03,279
در داخل این پشته بنابراین به این ترتیب
283
00:11:03,279 –> 00:11:04,480
اجرا می کنیم
284
00:11:04,480 –> 00:11:06,880
عملیات درج و حذف
285
00:11:06,880 –> 00:11:08,800
داخل پشته
286
00:11:08,800 –> 00:11:11,760
و محدودیت همان lifo است که هست
287
00:11:11,760 –> 00:11:14,720
آخرین در اولین بیرون، بنابراین ما فقط مجاز است
288
00:11:14,720 –> 00:11:15,920
به
289
00:11:15,920 –> 00:11:18,079
آخرین عنصر یا قسمت بالایی را بیرون بیاورید
290
00:11:18,079 –> 00:11:20,880
عنصر پشته در حال حاضر این یک خواهد بود
291
00:11:20,880 –> 00:11:23,360
زمانی که می خواهیم آن را پیدا کنیم بسیار مفید است
292
00:11:23,360 –> 00:11:24,560
به تازگی
293
00:11:24,560 –> 00:11:26,640
مورد را به پشته اضافه کرد
294
00:11:26,640 –> 00:11:29,040
بنابراین اکنون بیایید سعی کنیم این کل را پیاده سازی کنیم
295
00:11:29,040 –> 00:11:32,560
ساختار داده در پایتون
296
00:11:32,720 –> 00:11:34,880
بنابراین من قصد دارم از نوت بوک تکرار کننده استفاده کنم
297
00:11:34,880 –> 00:11:36,320
این را اجرا کنید
298
00:11:36,320 –> 00:11:37,600
و
299
00:11:37,600 –> 00:11:41,680
اساسا شما می توانید از هر ایده دیگری مانند استفاده کنید
300
00:11:41,680 –> 00:11:43,760
برای اجرای این چنین است
301
00:11:43,760 –> 00:11:46,320
اول از همه ما یک پشته می سازیم
302
00:11:46,320 –> 00:11:48,399
من فقط سعی می کنم اینجا نظر بدهم
303
00:11:48,399 –> 00:11:50,560
که ما یک پشته می سازیم
304
00:11:50,560 –> 00:11:51,920
و سپس
305
00:11:51,920 –> 00:11:54,160
یک چیز خوش شانس در مورد پایتون این است که
306
00:11:54,160 –> 00:11:55,760
فراهم می کند
307
00:11:55,760 –> 00:11:58,720
پیاده سازی لیست بنابراین اساسا لیست
308
00:11:58,720 –> 00:12:00,079
می توان استفاده کرد
309
00:12:00,079 –> 00:12:02,160
یک پشته بسازیم و می توانیم از تعدادی استفاده کنیم
310
00:12:02,160 –> 00:12:04,800
توابع از پیش تعریف شده یا داخلی مانند
311
00:12:04,800 –> 00:12:06,959
تابع اضافه کردن برای انجام درج
312
00:12:06,959 –> 00:12:08,320
عمل
313
00:12:08,320 –> 00:12:10,399
بنابراین اولین کاری که می خواهم انجام دهم
314
00:12:10,399 –> 00:12:13,040
می توانید ببینید که من یک خالی ایجاد کرده ام
315
00:12:13,040 –> 00:12:15,519
اینجا لیست کنید
316
00:12:15,519 –> 00:12:19,200
لیست خالی سمت راست
317
00:12:19,200 –> 00:12:21,200
در گام بعدی ما می خواهیم فشار بیاوریم
318
00:12:21,200 –> 00:12:24,320
برخی از عناصر داخل پشته در حال حاضر
319
00:12:24,320 –> 00:12:27,120
من قصد دارم از ضمیمه نقطه پشته استفاده کنم
320
00:12:27,120 –> 00:12:28,880
عملکرد
321
00:12:28,880 –> 00:12:31,200
برای فشار دادن یک عنصر به پشته
322
00:12:31,200 –> 00:12:33,920
بنابراین فرض کنید می خواهیم یک عنصر را فشار دهیم
323
00:12:33,920 –> 00:12:35,760
3 در داخل پشته
324
00:12:35,760 –> 00:12:37,519
بنابراین اول از همه می خواهم بنویسم و
325
00:12:37,519 –> 00:12:39,200
اینجا نظر دهید
326
00:12:39,200 –> 00:12:41,200
که ما در تلاشیم
327
00:12:41,200 –> 00:12:43,120
عناصر فشار
328
00:12:43,120 –> 00:12:45,600
داخل
329
00:12:45,920 –> 00:12:49,079
پشته
330
00:12:52,480 –> 00:12:56,079
بسیار خوب پس در حال حاضر ما
331
00:12:56,079 –> 00:12:59,920
چند عنصر دیگر را در پشته اضافه کنید
332
00:13:00,160 –> 00:13:04,720
پس بیایید سعی کنیم چهار را اضافه کنیم
333
00:13:05,279 –> 00:13:06,639
هشت
334
00:13:06,639 –> 00:13:08,720
یا شش
335
00:13:08,720 –> 00:13:10,399
و مانند این ما می توانیم برخی دیگر را اضافه کنیم
336
00:13:10,399 –> 00:13:13,600
عناصر موجود در پشته
337
00:13:16,240 –> 00:13:18,160
خیلی خوب پس قبل از ضمیمه کردن اینها
338
00:13:18,160 –> 00:13:20,959
سه بیایید بگوییم که فقط اوه را اضافه می کنیم
339
00:13:20,959 –> 00:13:23,440
سه در داخل پشته پس بیایید ببینیم
340
00:13:23,440 –> 00:13:25,600
پشته چگونه به نظر می رسد
341
00:13:25,600 –> 00:13:26,560
اکنون
342
00:13:26,560 –> 00:13:28,880
ctrl enter را می زنم تا نتیجه را ببینم
343
00:13:28,880 –> 00:13:31,040
بنابراین می توانید ببینید که پشته اکنون دارد
344
00:13:31,040 –> 00:13:34,320
سه در داخل آن، بنابراین اگر من فشار می دهم
345
00:13:34,320 –> 00:13:37,440
برخی از عناصر دیگر در آن، بنابراین اجازه دهید فشار
346
00:13:37,440 –> 00:13:40,079
الان 6
347
00:13:40,320 –> 00:13:42,320
دوباره از ضمیمه استفاده می کنم
348
00:13:42,320 –> 00:13:43,760
عملکرد
349
00:13:43,760 –> 00:13:47,600
برای فشار دادن 6 به داخل المنت
350
00:13:47,760 –> 00:13:50,639
اکنون می توانید ببینید که 3 و 6 در داخل وجود دارند
351
00:13:50,639 –> 00:13:52,880
از پشته بنابراین همه عناصر هستند
352
00:13:52,880 –> 00:13:54,639
رفتن به داخل پشته مانند فشار
353
00:13:54,639 –> 00:13:56,800
این
354
00:13:56,800 –> 00:13:59,120
حالا بیایید سعی کنیم عناصر بیشتری را به کار ببریم
355
00:13:59,120 –> 00:14:02,360
در پشته
356
00:14:02,880 –> 00:14:05,360
بیایید 8 را فشار دهیم
357
00:14:05,360 –> 00:14:08,240
و به طور مشابه من یکی دیگر را فشار می دهم
358
00:14:08,240 –> 00:14:09,839
عنصر
359
00:14:09,839 –> 00:14:13,680
اجازه دهید فشار 7 را داخل این قرار دهیم
360
00:14:13,680 –> 00:14:15,600
خوب، بنابراین می توانید ببینید که این پشته است
361
00:14:15,600 –> 00:14:17,920
اکنون پشته من به این شکل است
362
00:14:17,920 –> 00:14:20,160
فرض کنید میخواهم شش مورد را حذف کنم
363
00:14:20,160 –> 00:14:22,720
این پشته بنابراین هیچ راهی وجود ندارد که بتوانم
364
00:14:22,720 –> 00:14:25,360
شش را از پشته بردارید
365
00:14:25,360 –> 00:14:27,199
فوراً ابتدا باید حذف کنیم
366
00:14:27,199 –> 00:14:29,120
هفت و هشت
367
00:14:29,120 –> 00:14:32,079
بنابراین اکنون باید از پاپ استفاده کنیم
368
00:14:32,079 –> 00:14:34,160
عمل
369
00:14:34,160 –> 00:14:37,360
برای حذف برخی از عناصر از پشته
370
00:14:37,360 –> 00:14:40,000
بنابراین چه زمانی از نقطه پشته استفاده خواهم کرد
371
00:14:40,000 –> 00:14:42,000
تابع pop که از پیش تعریف شده است
372
00:14:42,000 –> 00:14:43,920
عملکردی در پایتون که ما نمی دانیم انجام می دهیم
373
00:14:43,920 –> 00:14:45,680
نیازی به پیاده سازی آن نیست
374
00:14:45,680 –> 00:14:47,760
کاری که انجام خواهد داد این است که آن را حذف خواهد کرد
375
00:14:47,760 –> 00:14:50,639
موردی که اخیراً به آن اضافه کرده اید
376
00:14:50,639 –> 00:14:53,040
پشته تا بتوانید عنصری که ما را مشاهده کنید
377
00:14:53,040 –> 00:14:54,480
اضافه کرده اند
378
00:14:54,480 –> 00:14:56,720
هفت بود می توانید ببینید که هفت بود
379
00:14:56,720 –> 00:14:59,760
در آخر پس از بیرون آمدن اضافه شد
380
00:14:59,760 –> 00:15:01,120
حذف خواهد کرد
381
00:15:01,120 –> 00:15:03,519
7 از پشته، بنابراین اگر ctrl را بزنم
382
00:15:03,519 –> 00:15:06,320
وارد کنید می بینید که 7 را از آن حذف کرده است
383
00:15:06,320 –> 00:15:07,440
پشته
384
00:15:07,440 –> 00:15:10,079
به همین ترتیب اگر دوباره تماس بگیریم
385
00:15:10,079 –> 00:15:13,440
به تابع pop حذف خواهد شد
386
00:15:13,440 –> 00:15:15,120
هشت از پشته
387
00:15:15,120 –> 00:15:17,600
و اکنون می توانید ببینید که هشت حذف شده است و
388
00:15:17,600 –> 00:15:19,760
به این ترتیب ما در واقع می توانیم
389
00:15:19,760 –> 00:15:24,240
بیرون بیایید و برخی از عناصر را به داخل فشار دهید
390
00:15:24,839 –> 00:15:28,079
پشته رفتن به درک بسیار
391
00:15:28,079 –> 00:15:30,639
ساختار داده مهم است
392
00:15:30,639 –> 00:15:32,880
ساختار داده لیست پیوندی
393
00:15:32,880 –> 00:15:35,199
مفاهیمی که در این مورد مطالعه خواهیم کرد
394
00:15:35,199 –> 00:15:38,160
آموزش به درک بیشتر کمک خواهد کرد
395
00:15:38,160 –> 00:15:39,600
ساختارهای داده
396
00:15:39,600 –> 00:15:42,079
مانند درختان دوتایی چون هستند
397
00:15:42,079 –> 00:15:44,720
بسیار شبیه به لیست پیوند شده است
398
00:15:44,720 –> 00:15:48,000
ما از ارجاعات در درخت های باینری استفاده خواهیم کرد
399
00:15:48,000 –> 00:15:51,040
و در ساختارهای داده بیشتر
400
00:15:51,040 –> 00:15:53,759
بنابراین یک ساختار داده بسیار مهم است
401
00:15:53,759 –> 00:15:56,160
برای درک در این مرحله
402
00:15:56,160 –> 00:15:58,160
در این آموزش قصد داریم به i’m
403
00:15:58,160 –> 00:16:00,399
دقیقاً به شما معرفی می کنم
404
00:16:00,399 –> 00:16:02,639
این ساختار داده است
405
00:16:02,639 –> 00:16:05,600
و سپس ما به
406
00:16:05,600 –> 00:16:08,639
کد را در پایتون بنویسید و اساسا
407
00:16:08,639 –> 00:16:11,199
ما عملیات های مختلفی را انجام خواهیم داد
408
00:16:11,199 –> 00:16:13,120
این ساختار داده که به این پیوند است
409
00:16:13,120 –> 00:16:15,120
لیست مانند درج
410
00:16:15,120 –> 00:16:18,480
حذف پیمایش و غیره ما آنها را انجام خواهیم داد
411
00:16:18,480 –> 00:16:21,040
به صورت جداگانه در فیلم های جداگانه
412
00:16:21,040 –> 00:16:24,160
پس بیایید اول از همه شروع کنیم
413
00:16:24,160 –> 00:16:27,440
لیست پیوند یک ساختار داده است
414
00:16:27,440 –> 00:16:30,639
که در آن ما می توانیم آیتم ها را ترتیب دهیم
415
00:16:30,639 –> 00:16:33,120
ابتدا برخی از موارد داده را در نظر بگیرید
416
00:16:33,120 –> 00:16:35,279
اجازه دهید برخی از اعداد صحیح را در نظر بگیریم
417
00:16:35,279 –> 00:16:36,880
برای گرفتن مقداری
418
00:16:36,880 –> 00:16:39,759
اعداد صحیح تصادفی فرض کنید 5
419
00:16:39,759 –> 00:16:41,279
4
420
00:16:41,279 –> 00:16:42,320
11
421
00:16:42,320 –> 00:16:44,160
8
422
00:16:44,160 –> 00:16:46,720
و بیایید یک 10 مورد دیگر را بگوییم
423
00:16:46,720 –> 00:16:49,680
بنابراین اکنون ما پنج عنصر داریم
424
00:16:49,680 –> 00:16:51,440
که در اینجا می توانید ببینید که کدام هستند
425
00:16:51,440 –> 00:16:52,720
اساسا
426
00:16:52,720 –> 00:16:53,680
داده ها
427
00:16:53,680 –> 00:16:56,079
موارد
428
00:16:56,079 –> 00:16:58,639
بسیار خوب پس در این لیست پخش ما داریم
429
00:16:58,639 –> 00:17:00,399
قبلا مطالعه شده است
430
00:17:00,399 –> 00:17:02,720
آرایه ها و ما دیده ایم که چگونه می توانیم
431
00:17:02,720 –> 00:17:06,000
آرایه ها را در پایتون نیز پیاده سازی کنید
432
00:17:06,000 –> 00:17:08,079
پس چه تفاوتی بین
433
00:17:08,079 –> 00:17:11,119
ذخیره این پنج آیتم داده در یک
434
00:17:11,119 –> 00:17:12,079
آرایه
435
00:17:12,079 –> 00:17:13,919
و در یک لیست پیوندی نیز خواهیم دید
436
00:17:13,919 –> 00:17:14,720
که
437
00:17:14,720 –> 00:17:16,839
پس بیایید فرض کنیم
438
00:17:16,839 –> 00:17:18,959
من خواهم
439
00:17:18,959 –> 00:17:23,520
یک نمودار بسیار کوچک در اینجا رسم کنید
440
00:17:23,520 –> 00:17:25,280
بیایید فرض کنیم که داریم
441
00:17:25,280 –> 00:17:26,720
این خاطره
442
00:17:26,720 –> 00:17:28,799
و اساساً وقتی در مورد حافظه صحبت می کنیم
443
00:17:28,799 –> 00:17:31,440
ما در واقع در مورد رام صحبت می کنیم
444
00:17:31,440 –> 00:17:34,640
که حافظه دسترسی تصادفی است
445
00:17:34,640 –> 00:17:38,480
و اساسا cpu به این رم دسترسی خواهد داشت
446
00:17:38,480 –> 00:17:40,960
و این فضای حافظه
447
00:17:40,960 –> 00:17:42,480
بنابراین
448
00:17:42,480 –> 00:17:44,720
این موارد در جایی ذخیره می شوند
449
00:17:44,720 –> 00:17:47,520
در داخل این بلوک های حافظه بیایید بگوییم
450
00:17:47,520 –> 00:17:49,679
هر بلوک نشان دهنده
451
00:17:49,679 –> 00:17:52,240
یک بایت درست است، بنابراین من فقط این را ترسیم می کنم
452
00:17:52,240 –> 00:17:53,919
نمودار ساده
453
00:17:53,919 –> 00:17:57,280
و بیایید بگوییم وجود دارد
454
00:17:57,760 –> 00:17:59,760
بلوک های زیادی در اینجا مانند این درست است
455
00:17:59,760 –> 00:18:01,440
بنابراین بیایید بگوییم این است
456
00:18:01,440 –> 00:18:03,360
یک خاطره و
457
00:18:03,360 –> 00:18:05,600
ما می خواهیم این عناصر را در داخل ذخیره کنیم
458
00:18:05,600 –> 00:18:08,559
از آرایه بنابراین زمانی که از آرایه ها چه استفاده می کنیم
459
00:18:08,559 –> 00:18:10,799
پشت صحنه اتفاق افتاده اینها هستند
460
00:18:10,799 –> 00:18:14,240
عناصر در این ذخیره می شوند
461
00:18:14,240 –> 00:18:15,600
حافظه
462
00:18:15,600 –> 00:18:19,039
به صورت مستمر
463
00:18:19,039 –> 00:18:22,240
بنابراین آرایه ها این عناصر را ذخیره می کنند
464
00:18:22,240 –> 00:18:24,960
به صورت مستمر
465
00:18:24,960 –> 00:18:28,000
درست است بنابراین برای ذخیره این عناصر ما
466
00:18:28,000 –> 00:18:29,440
باید ایجاد کنند
467
00:18:29,440 –> 00:18:32,880
آرایه ای از پنج عنصر درست است پس چه زمانی
468
00:18:32,880 –> 00:18:35,200
چه زمانی آن را اختصاص می دهیم
469
00:18:35,200 –> 00:18:39,919
5 4 11 8 10 داخل پر می شود
470
00:18:39,919 –> 00:18:44,240
پنج بلوک پیوسته مانند این 5
471
00:18:44,240 –> 00:18:46,640
4 11
472
00:18:46,640 –> 00:18:47,520
8
473
00:18:47,520 –> 00:18:48,640
10
474
00:18:48,640 –> 00:18:49,919
و 5
475
00:18:49,919 –> 00:18:51,120
مثل این
476
00:18:51,120 –> 00:18:54,400
یکی از اشکالات عمده این نوع داده ها
477
00:18:54,400 –> 00:18:55,520
ساختار
478
00:18:55,520 –> 00:18:58,160
این است که ما مجبور خواهیم شد
479
00:18:58,160 –> 00:19:00,559
مطمئن شوید که حافظه حاوی
480
00:19:00,559 –> 00:19:03,360
پنج بلوک پیوسته
481
00:19:03,360 –> 00:19:05,679
برای آیتم های داده
482
00:19:05,679 –> 00:19:08,080
ممکن است اتفاق بیفتد که در حافظه اصلی ما
483
00:19:08,080 –> 00:19:09,840
ندارد
484
00:19:09,840 –> 00:19:12,799
این پنج عنصر
485
00:19:12,799 –> 00:19:16,160
بنابراین این پنج عنصر پنج چهار یازده
486
00:19:16,160 –> 00:19:18,880
هشت ده ممکن است اتفاق بیفتد که در داخل
487
00:19:18,880 –> 00:19:21,120
حافظه اصلی که نداریم
488
00:19:21,120 –> 00:19:24,000
پنج بلوک پیوسته درست است پس بیایید
489
00:19:24,000 –> 00:19:26,320
می گویند برخی از داده ها وجود دارد
490
00:19:26,320 –> 00:19:28,799
در این بلوک که ما که برخی دیگر
491
00:19:28,799 –> 00:19:31,520
برنامه اشغال است و بیایید بگوییم
492
00:19:31,520 –> 00:19:34,640
ما پنج بلوک پیوسته نداریم
493
00:19:34,640 –> 00:19:38,559
اما ما در مجموع پنج بلوک برای
494
00:19:38,559 –> 00:19:41,520
که ما می توانیم این عناصر را ذخیره کنیم
495
00:19:41,520 –> 00:19:42,960
درست است
496
00:19:42,960 –> 00:19:45,280
آرایه ها در آن شرایط شکست خواهند خورد
497
00:19:45,280 –> 00:19:47,760
زیرا آنها در واقع همه را اختصاص می دهند
498
00:19:47,760 –> 00:19:49,039
اینها در
499
00:19:49,039 –> 00:19:50,960
تک بلوک
500
00:19:50,960 –> 00:19:53,360
حالا بیایید ببینیم داده های لیست پیوند چیست
501
00:19:53,360 –> 00:19:56,240
ساختار و چگونگی آن
502
00:19:56,240 –> 00:19:58,400
فقط اینو بهتر کن
503
00:19:58,400 –> 00:20:01,159
یا این حافظه را بهینه کنید
504
00:20:01,159 –> 00:20:04,159
بهینه سازی پس بیایید بگوییم
505
00:20:04,159 –> 00:20:06,640
ما همین عناصر را داریم
506
00:20:06,640 –> 00:20:08,640
اکنون در یک لیست پیوندی ساختار داده چیست
507
00:20:08,640 –> 00:20:12,559
ما انجام می دهیم این است که اولین عنصر را انتخاب می کنیم
508
00:20:12,559 –> 00:20:15,039
که 5 است
509
00:20:15,039 –> 00:20:16,960
و این عنصر
510
00:20:16,960 –> 00:20:19,520
یک عنصر فردی است
511
00:20:19,520 –> 00:20:23,840
و عنصر بعدی که 4 است
512
00:20:23,840 –> 00:20:26,960
عنصر دیگری است و هر کدام را فراخوانی می کنیم
513
00:20:26,960 –> 00:20:28,880
این عناصر به عنوان
514
00:20:28,880 –> 00:20:31,360
گره ها
515
00:20:31,679 –> 00:20:33,039
بنابراین اگر ما
516
00:20:33,039 –> 00:20:35,280
می خواهم بگویم که عنصر بعدی که
517
00:20:35,280 –> 00:20:39,440
بعد از 5 می آید 4 ما از یک مرجع استفاده می کنیم
518
00:20:39,440 –> 00:20:42,080
که در اصل الف است
519
00:20:42,080 –> 00:20:44,559
اشاره گر شما می توانید بگویید یا اساسا یک است
520
00:20:44,559 –> 00:20:47,120
مرجعی که در این مورد خوب است
521
00:20:47,120 –> 00:20:48,400
آدرس حافظه
522
00:20:48,400 –> 00:20:51,039
این گره 4 درست است
523
00:20:51,039 –> 00:20:52,960
این در اصل یک است
524
00:20:52,960 –> 00:20:55,600
مرجع
525
00:20:57,520 –> 00:21:00,000
اکنون عنصر بعدی را در نظر بگیرید
526
00:21:00,000 –> 00:21:01,440
11
527
00:21:01,440 –> 00:21:04,640
خواهیم گفت که 11 یک گره است
528
00:21:04,640 –> 00:21:06,799
و ما این را خواهیم گفت
529
00:21:06,799 –> 00:21:09,440
یک اشاره گر وجود دارد که از 4 می رود
530
00:21:09,440 –> 00:21:12,000
و به این موضوع اشاره می کند
531
00:21:12,000 –> 00:21:14,880
11 درست است پس درست است
532
00:21:14,880 –> 00:21:17,600
فرض کنید من می خواهم ذخیره کنم
533
00:21:17,600 –> 00:21:19,440
حالا اجازه دهید این عناصر را حذف کنم
534
00:21:19,440 –> 00:21:21,360
بگو اینها اینجا نیستند
535
00:21:21,360 –> 00:21:23,760
اکنون در یک ساختار داده مانند لیست پیوندی
536
00:21:23,760 –> 00:21:27,760
من می توانم پنج را در این مکان حافظه ذخیره کنم
537
00:21:27,760 –> 00:21:30,720
کل این فضای حافظه مقداری آدرس دارد
538
00:21:30,720 –> 00:21:32,320
اختصاص داده شده توسط
539
00:21:32,320 –> 00:21:34,240
cpu که اساسا منطقی هستند
540
00:21:34,240 –> 00:21:37,360
آدرس ها بنابراین هر یک از این بلوک ها دارند
541
00:21:37,360 –> 00:21:40,000
یک آدرس درست است، پس بیایید آدرس بعدی را بگوییم
542
00:21:40,000 –> 00:21:42,080
عنصر 4 اینجاست
543
00:21:42,080 –> 00:21:44,320
بنابراین کاری که من انجام خواهم داد این است که a را اختصاص می دهم
544
00:21:44,320 –> 00:21:46,720
مرجعی که خواهد گفت
545
00:21:46,720 –> 00:21:48,960
از این مکان حافظه
546
00:21:48,960 –> 00:21:50,880
شما باید به این خاطره بروید
547
00:21:50,880 –> 00:21:52,960
مکان و شما پیدا خواهید کرد
548
00:21:52,960 –> 00:21:56,880
عنصر بعدی در داخل داده های ما
549
00:21:56,880 –> 00:21:59,120
اکنون می توانید ببینید که ما 11 به عنوان بعدی داریم
550
00:21:59,120 –> 00:22:00,720
عنصر و بیایید بگوییم
551
00:22:00,720 –> 00:22:03,280
11 در اینجا ذخیره می شود
552
00:22:03,280 –> 00:22:06,480
بنابراین اکنون به یک مرجع دیگر نیاز خواهیم داشت
553
00:22:06,480 –> 00:22:09,679
به این گره داده اشاره کنید به همین دلیل است که ما
554
00:22:09,679 –> 00:22:12,159
آنها را به عنوان گره به درستی صدا کنید زیرا آنها
555
00:22:12,159 –> 00:22:15,120
فردی هستند یا می توان گفت مستقل هستند
556
00:22:15,120 –> 00:22:16,159
داده ها
557
00:22:16,159 –> 00:22:16,960
و
558
00:22:16,960 –> 00:22:19,200
می توانید ببینید مزیت اصلی این است که
559
00:22:19,200 –> 00:22:22,799
اینها به طور مداوم ذخیره نمی شوند
560
00:22:22,799 –> 00:22:25,360
همانطور که در مورد
561
00:22:25,360 –> 00:22:26,400
آرایه ها
562
00:22:26,400 –> 00:22:29,760
و در واقع به ما کمک خواهد کرد که a را ذخیره کنیم
563
00:22:29,760 –> 00:22:33,440
فضای زیادی وجود دارد زیرا اگر ما اختصاص دهیم
564
00:22:33,440 –> 00:22:36,240
این موارد به صورت پیوسته
565
00:22:36,240 –> 00:22:38,640
پیوسته را اشغال خواهد کرد
566
00:22:38,640 –> 00:22:42,080
بخش و این یک بخش بسیار بزرگ خواهد بود
567
00:22:42,080 –> 00:22:43,280
مسئله
568
00:22:43,280 –> 00:22:46,320
فرض کنید می خواهیم 5 میلیون ذخیره کنیم
569
00:22:46,320 –> 00:22:49,280
آیتم های داده داخل برخی از حافظه ها
570
00:22:49,280 –> 00:22:52,080
و در این صورت به عدد 5 نیاز خواهیم داشت
571
00:22:52,080 –> 00:22:53,200
میلیون
572
00:22:53,200 –> 00:22:55,760
بلوک داده که در واقع در a
573
00:22:55,760 –> 00:22:58,640
به شیوه ای مستمر در آن صورت یک پیوند
574
00:22:58,640 –> 00:23:01,280
ساختار داده فهرست بسیار مفید خواهد بود
575
00:23:01,280 –> 00:23:04,159
در حال حاضر عنصر بعدی آن است پس ما خواهیم کرد
576
00:23:04,159 –> 00:23:05,919
یک مرجع اختصاص دهید
577
00:23:05,919 –> 00:23:08,640
به این هشت گره
578
00:23:08,640 –> 00:23:10,559
و سپس به طور مشابه به آخرین گره
579
00:23:10,559 –> 00:23:13,360
که 10 است.
580
00:23:13,520 –> 00:23:15,360
حالا بیایید چند نکته مهم را درک کنیم
581
00:23:15,360 –> 00:23:18,080
اصطلاحات در لیست لینگ که ما خواهیم گفت
582
00:23:18,080 –> 00:23:20,559
از زمانی که برنامه را در آن می نویسیم استفاده کنید
583
00:23:20,559 –> 00:23:22,559
زبان برنامه نویسی پایتون
584
00:23:22,559 –> 00:23:24,480
یا حتی اگر دیگری را انتخاب کنید
585
00:23:24,480 –> 00:23:27,200
زبان برنامه نویسی این اصطلاحات
586
00:23:27,200 –> 00:23:28,799
بسیار کمک کننده هستند
587
00:23:28,799 –> 00:23:30,880
بنابراین اولین دوره ای که شما داریم
588
00:23:30,880 –> 00:23:33,600
قبلاً بحث شده این است که گره ها چیست
589
00:23:33,600 –> 00:23:34,799
ما آن را میدانیم
590
00:23:34,799 –> 00:23:38,240
در حال حاضر به این مراجع نیز می گویند
591
00:23:38,240 –> 00:23:40,640
اشاره گرهای بعدی
592
00:23:40,640 –> 00:23:43,919
اشاره گرهای بعدی درست است و اساساً همینطور است
593
00:23:43,919 –> 00:23:46,640
زیرا به مورد بعدی اشاره می کند
594
00:23:46,640 –> 00:23:49,279
داخل مجموعه داده های من
595
00:23:49,279 –> 00:23:51,840
اکنون در یک لیست پیوندی یک لیست پیوندی می تواند
596
00:23:51,840 –> 00:23:53,919
از انواع مختلف باشد
597
00:23:53,919 –> 00:23:57,760
این می تواند یک لیست پیوند منفرد باشد
598
00:23:57,760 –> 00:24:01,760
این می تواند یک لیست پیوند منفرد باشد
599
00:24:02,840 –> 00:24:08,159
و می تواند یک لیست با پیوند دوگانه باشد
600
00:24:14,240 –> 00:24:17,120
و آخرین آن است
601
00:24:17,120 –> 00:24:20,720
لیست پیوندی دایره ای
602
00:24:22,000 –> 00:24:24,559
در این آموزش ما آن را پیاده سازی خواهیم کرد
603
00:24:24,559 –> 00:24:27,279
لیست پیوندی تکی در لیست پیوندی منفرد
604
00:24:27,279 –> 00:24:30,240
ما یک اشاره گر تک سمت راست داریم
605
00:24:30,240 –> 00:24:31,279
مرجع
606
00:24:31,279 –> 00:24:33,679
در لیست دارای پیوند دوگانه ما نشانگرها را داریم
607
00:24:33,679 –> 00:24:36,080
که اشاره گر بعدی هستند و داریم
608
00:24:36,080 –> 00:24:38,000
ما همچنین یک اشاره گر دیگر داریم که
609
00:24:38,000 –> 00:24:39,840
اشاره کرد به
610
00:24:39,840 –> 00:24:42,159
عنصر قبلی درست است، بنابراین ما آن را به عنوان
611
00:24:42,159 –> 00:24:43,679
قبلی
612
00:24:43,679 –> 00:24:46,799
اشاره گر و به طور مشابه ما این را برای
613
00:24:46,799 –> 00:24:48,960
همه موارد
614
00:24:48,960 –> 00:24:51,120
در یک لیست با پیوند دوگانه و به طور مشابه
615
00:24:51,120 –> 00:24:53,200
یک تغییر در یک دایره پیوند وجود دارد
616
00:24:53,200 –> 00:24:54,640
لیست اما
617
00:24:54,640 –> 00:24:56,960
در این آموزش ما فقط بر روی آن تمرکز خواهیم کرد
618
00:24:56,960 –> 00:24:59,279
لیست پیوندهای منفرد بنابراین به صورت تکی
619
00:24:59,279 –> 00:25:01,600
لیست پیوندی قبلی ما این لیست را نداریم
620
00:25:01,600 –> 00:25:05,360
اشاره گر ما این را در اینجا نداریم
621
00:25:05,440 –> 00:25:06,960
درست
622
00:25:06,960 –> 00:25:09,120
ما فقط یک تک آهنگ داریم
623
00:25:09,120 –> 00:25:12,720
پس اجازه دهید این نمودار را دوباره در اینجا رسم کنم
624
00:25:12,720 –> 00:25:14,400
5 اینجاست
625
00:25:14,400 –> 00:25:16,400
و 4
626
00:25:16,400 –> 00:25:18,080
11
627
00:25:18,080 –> 00:25:21,279
8 و 10.
628
00:25:21,520 –> 00:25:23,520
بنابراین اولین عبارت نت ها است
629
00:25:23,520 –> 00:25:28,080
عبارت دوم این اشاره گر بعدی است
630
00:25:28,080 –> 00:25:30,559
زمانی که ما کل این داده ها را پیاده سازی خواهیم کرد
631
00:25:30,559 –> 00:25:33,200
ساختار در پایتون باید انجام دهیم
632
00:25:33,200 –> 00:25:36,400
اینها را به صورت جداگانه اختصاص دهید
633
00:25:36,400 –> 00:25:39,039
اقلام داده داخل حافظه و
634
00:25:39,039 –> 00:25:40,640
راه انجام این است
635
00:25:40,640 –> 00:25:42,480
برای ایجاد یک کلاس
636
00:25:42,480 –> 00:25:43,760
گره
637
00:25:43,760 –> 00:25:45,600
و سپس یک شی از ایجاد خواهیم کرد
638
00:25:45,600 –> 00:25:47,840
این کلاس و همانطور که همه می دانیم
639
00:25:47,840 –> 00:25:51,679
هر زمان که یک شی از یک کلاس ایجاد می کنیم
640
00:25:51,679 –> 00:25:53,520
آن را اختصاص می دهد
641
00:25:53,520 –> 00:25:56,159
به خصوص تمام داده های داخل این
642
00:25:56,159 –> 00:25:57,919
کلاس در حافظه اصلی
643
00:25:57,919 –> 00:25:59,919
درست است بنابراین ما از کلاس ها و استفاده خواهیم کرد
644
00:25:59,919 –> 00:26:02,159
دانش ما از کلاس ها را هدف قرار می دهد و
645
00:26:02,159 –> 00:26:03,440
اشیاء
646
00:26:03,440 –> 00:26:06,400
برای اختصاص دادن این گره ها در اینجا
647
00:26:06,400 –> 00:26:09,200
سپس از برخی مراجع استفاده خواهیم کرد
648
00:26:09,200 –> 00:26:11,919
در داخل این گره کلاس و کدام
649
00:26:11,919 –> 00:26:13,919
اساساً به این عناصر بعدی اشاره کنید
650
00:26:13,919 –> 00:26:16,159
که در ادامه به آن خواهیم پرداخت
651
00:26:16,159 –> 00:26:18,240
آموزش های آینده زمانی که چگونه مطالعه خواهیم کرد
652
00:26:18,240 –> 00:26:21,360
برای درج عناصر در داخل پیوند
653
00:26:21,360 –> 00:26:23,840
بنابراین ساختار اساسی یک پیوند داده شده را فهرست کنید
654
00:26:23,840 –> 00:26:25,760
لیست شامل یک گره است
655
00:26:25,760 –> 00:26:27,760
که آن آیتم داده است
656
00:26:27,760 –> 00:26:28,960
داده
657
00:26:28,960 –> 00:26:31,360
و دومی مرجع است
658
00:26:31,360 –> 00:26:35,279
درست است پس اجازه دهید آن را به عنوان ref بنویسیم
659
00:26:35,279 –> 00:26:37,520
یک اصطلاح مهم اینجاست
660
00:26:37,520 –> 00:26:40,559
که آخرین گره از
661
00:26:40,559 –> 00:26:43,120
لیست پیوند شده به یک عدد تهی اشاره می کند
662
00:26:43,120 –> 00:26:45,520
حق مرجع
663
00:26:45,520 –> 00:26:47,039
مرجع پوچ
664
00:26:47,039 –> 00:26:49,440
تا بتوانیم بفهمیم
665
00:26:49,440 –> 00:26:52,080
که این پایان مجموعه داده و
666
00:26:52,080 –> 00:26:54,080
اکنون ما باید متوقف شویم
667
00:26:54,080 –> 00:26:57,600
عبور از داخل این مجموعه داده
668
00:26:57,600 –> 00:26:59,919
این نشانگر تهی است و ما می دانیم
669
00:26:59,919 –> 00:27:02,400
که می توانیم استفاده کنیم
670
00:27:02,400 –> 00:27:05,120
هیچ کلمه کلیدی در پایتون به در واقع
671
00:27:05,120 –> 00:27:08,320
اشاره به یک اشاره گر تهی به سمت راست
672
00:27:08,320 –> 00:27:11,279
آخرین اصطلاح مهم سر است
673
00:27:11,279 –> 00:27:13,760
اشاره گر
674
00:27:13,919 –> 00:27:15,600
این نشانگر سر
675
00:27:15,600 –> 00:27:18,559
اساساً برای اشاره به
676
00:27:18,559 –> 00:27:20,480
اولین عنصر از
677
00:27:20,480 –> 00:27:23,200
لیست پیوند داده شده تا بتوانیم بدانیم
678
00:27:23,200 –> 00:27:24,159
که
679
00:27:24,159 –> 00:27:25,679
از این
680
00:27:25,679 –> 00:27:28,000
گره به بعد ما پیوند را شروع می کنیم
681
00:27:28,000 –> 00:27:31,200
فهرست کنید بنابراین یک اصطلاح بسیار مهم است
682
00:27:31,200 –> 00:27:33,600
و ما قصد داریم این را در آن پیاده سازی کنیم
683
00:27:33,600 –> 00:27:36,640
پایتون اولین کار
684
00:27:36,640 –> 00:27:39,200
ایجاد کردن است
685
00:27:39,200 –> 00:27:41,440
اجازه دهید من در اینجا بنویسم من خواهم نوشت
686
00:27:41,440 –> 00:27:43,039
اینجا نظر دهید
687
00:27:43,039 –> 00:27:45,919
مرحله یک
688
00:27:46,080 –> 00:27:49,520
اختصاص دادن است
689
00:27:49,520 –> 00:27:52,559
مورد داده
690
00:27:53,440 –> 00:27:54,480
که در
691
00:27:54,480 –> 00:27:56,640
حافظه درست
692
00:27:56,640 –> 00:27:58,559
ما باید آیتم داده را تخصیص دهیم
693
00:27:58,559 –> 00:28:00,640
در حافظه و راه انجام این است که
694
00:28:00,640 –> 00:28:03,440
درست یک کلاس ایجاد کنید، بنابراین من این کار را خواهم کرد
695
00:28:03,440 –> 00:28:04,240
نوشتن
696
00:28:04,240 –> 00:28:05,679
ایجاد یک
697
00:28:05,679 –> 00:28:08,559
کلاس گره در اینجا
698
00:28:08,559 –> 00:28:10,399
حالا بیایید ببینیم چگونه می توانیم یک گره ایجاد کنیم
699
00:28:10,399 –> 00:28:12,080
کلاس
700
00:28:12,080 –> 00:28:14,880
ما از کلمه کلیدی کلاس رزرو شده استفاده خواهیم کرد
701
00:28:14,880 –> 00:28:17,039
و نام گره است
702
00:28:17,039 –> 00:28:19,039
به دنبال آن یک کولون
703
00:28:19,039 –> 00:28:20,880
و اینتر را فشار می دهیم
704
00:28:20,880 –> 00:28:23,919
اکنون در این کلاس گره هر زمان که بخواهیم
705
00:28:23,919 –> 00:28:25,919
یک شی از کلاس گره we ایجاد کنید
706
00:28:25,919 –> 00:28:28,640
باید مورد داده را درست مشخص کند
707
00:28:28,640 –> 00:28:31,120
که در مورد ما عددی صحیح خواهد بود
708
00:28:31,120 –> 00:28:33,919
بنابراین اگر اینجا را ببینید می توانید اینجا را ببینید
709
00:28:33,919 –> 00:28:36,640
که اگر عنصر 5 باشد و ما هستیم
710
00:28:36,640 –> 00:28:38,799
ایجاد یک گره کلاس
711
00:28:38,799 –> 00:28:41,679
داده ها باید در زمان ارسال شوند
712
00:28:41,679 –> 00:28:44,720
ایجاد شی این بسیار مهم است
713
00:28:44,720 –> 00:28:45,520
خط
714
00:28:45,520 –> 00:28:47,440
که در زمان ایجاد آن خواهیم داشت
715
00:28:47,440 –> 00:28:50,080
جسمی که باید این را پاس کنیم
716
00:28:50,080 –> 00:28:51,039
داده ها
717
00:28:51,039 –> 00:28:52,480
به شی
718
00:28:52,480 –> 00:28:54,640
و ما از قبل می دانیم که می توانیم آن را انجام دهیم
719
00:28:54,640 –> 00:28:55,760
استفاده كردن
720
00:28:55,760 –> 00:28:58,760
سازندگان
721
00:29:00,399 –> 00:29:02,799
شما می توانید پایتون ساده را درک کنید
722
00:29:02,799 –> 00:29:05,440
مفاهیم موجود در لیست پخش پایتون نیز همینطور است
723
00:29:05,440 –> 00:29:08,000
من لینک آن لیست پخش را داده ام و
724
00:29:08,000 –> 00:29:10,159
لیست پخش ساختارهای داده در
725
00:29:10,159 –> 00:29:11,840
شرح زیر تا بتوانید آن را بررسی کنید
726
00:29:11,840 –> 00:29:13,840
اگر می خواهید بفهمید
727
00:29:13,840 –> 00:29:16,080
مفاهیم و یا می خواهید آن را اصلاح کنید
728
00:29:16,080 –> 00:29:18,000
درست
729
00:29:18,000 –> 00:29:20,640
باشه پس بیایید اینجا حرکت کنیم
730
00:29:20,640 –> 00:29:23,520
گره کلاس یک خواهد داشت
731
00:29:23,520 –> 00:29:25,200
سازنده و راه تعریف a
732
00:29:25,200 –> 00:29:26,640
سازنده
733
00:29:26,640 –> 00:29:29,360
استفاده از
734
00:29:29,360 –> 00:29:31,760
init
735
00:29:32,159 –> 00:29:35,120
با دو خط زیر در اینجا مانند این
736
00:29:35,120 –> 00:29:37,919
ما می دانیم که دو عنصر اول را پاس می کنیم
737
00:29:37,919 –> 00:29:40,799
خود است
738
00:29:40,799 –> 00:29:43,840
و دومی
739
00:29:44,799 –> 00:29:48,159
اجازه دهید فقط سایز را افزایش دهم
740
00:29:48,159 –> 00:29:50,720
بنابراین همه چیز در حال حاضر روشن خواهد شد
741
00:29:50,720 –> 00:29:52,559
بسیار خوب پس اولین عنصر این است
742
00:29:52,559 –> 00:29:53,520
سلول ها
743
00:29:53,520 –> 00:29:56,000
و عنصر دوم حق داده است
744
00:29:56,000 –> 00:29:58,960
بنابراین ما در حال تعریف یک سازنده در آن هستیم
745
00:29:58,960 –> 00:30:00,799
ما می گوییم که هر زمان که شما در حال ایجاد یک
746
00:30:00,799 –> 00:30:02,159
کلاس گره
747
00:30:02,159 –> 00:30:04,640
شما باید داده ها را منتقل کنید
748
00:30:04,640 –> 00:30:07,120
می تواند یک عدد صحیح یا یک کاراکتر باشد
749
00:30:07,120 –> 00:30:09,039
هر چیزی جز شما باید از آن عبور کنید
750
00:30:09,039 –> 00:30:10,640
اجباری است
751
00:30:10,640 –> 00:30:13,360
بنابراین اکنون آن را اینگونه تعریف می کنیم
752
00:30:13,360 –> 00:30:14,240
اکنون
753
00:30:14,240 –> 00:30:16,640
می توانید ببینید که گره ما
754
00:30:16,640 –> 00:30:18,559
که اینجاست
755
00:30:18,559 –> 00:30:21,279
این گره 5 داده است و ما هستیم
756
00:30:21,279 –> 00:30:23,200
عبور از آن در زمان شی
757
00:30:23,200 –> 00:30:25,039
ایجاد بنابراین هر زمان که ما ایجاد کنیم
758
00:30:25,039 –> 00:30:27,120
شیء این کلاس گره
759
00:30:27,120 –> 00:30:29,360
به طور خودکار خواهد شد
760
00:30:29,360 –> 00:30:31,120
یک سازنده ایجاد خواهد کرد
761
00:30:31,120 –> 00:30:33,200
به طور خودکار سازنده و
762
00:30:33,200 –> 00:30:35,520
فایل دیتا را به این منتقل می کند
763
00:30:35,520 –> 00:30:36,799
سازنده
764
00:30:36,799 –> 00:30:39,760
می توانید ببینید که یک خود وجود دارد
765
00:30:39,760 –> 00:30:42,240
همچنین که اساساً اشاره ای به
766
00:30:42,240 –> 00:30:43,039
را
767
00:30:43,039 –> 00:30:45,600
شیئی که با آن سعی دارد این را فراخوانی کند
768
00:30:45,600 –> 00:30:47,360
گره کلاس
769
00:30:47,360 –> 00:30:49,360
خیلی خب بریم سراغ بعدی
770
00:30:49,360 –> 00:30:53,600
چیزی که سازنده را تعریف می کند
771
00:30:53,600 –> 00:30:55,679
در سازنده یک را ایجاد خواهیم کرد
772
00:30:55,679 –> 00:30:56,559
مورد
773
00:30:56,559 –> 00:30:59,360
ما از آیتم خود نقطه برای نشان دادن استفاده خواهیم کرد
774
00:30:59,360 –> 00:31:00,240
که
775
00:31:00,240 –> 00:31:02,480
هر شیئی که سعی دارد این را نامگذاری کند
776
00:31:02,480 –> 00:31:03,360
گره
777
00:31:03,360 –> 00:31:05,279
می دانیم که گره های مختلفی وجود دارد
778
00:31:05,279 –> 00:31:08,159
زیرا ما آیتم های داده متفاوتی داریم 5 4
779
00:31:08,159 –> 00:31:10,000
11 8 10
780
00:31:10,000 –> 00:31:13,360
بنابراین ما در واقع به آیتم خود نقطه نیاز داریم
781
00:31:13,360 –> 00:31:15,519
نمایندگی که
782
00:31:15,519 –> 00:31:19,039
تماس خاص در واقع اوه
783
00:31:19,039 –> 00:31:21,360
ما در واقع به خود ما ارجاع می دهیم
784
00:31:21,360 –> 00:31:23,120
از خود برای ارجاع به آن استفاده می کنند
785
00:31:23,120 –> 00:31:26,480
تماس خاص در زمان شی
786
00:31:26,480 –> 00:31:29,120
خلقت درست است، بنابراین ما یک خود را خلق خواهیم کرد
787
00:31:29,120 –> 00:31:32,399
مورد نقطه و سپس آن را به آن اختصاص می دهیم
788
00:31:32,399 –> 00:31:34,320
ارزش داده ها
789
00:31:34,320 –> 00:31:36,480
بیایید بگوییم که ما داده ها به عنوان پنج است بنابراین ما
790
00:31:36,480 –> 00:31:37,519
خواهم گفت
791
00:31:37,519 –> 00:31:41,120
که مورد از آن شی که توسط
792
00:31:41,120 –> 00:31:44,000
استفاده از خود برابر با پنج است
793
00:31:44,000 –> 00:31:44,880
درست
794
00:31:44,880 –> 00:31:47,360
هدف اصلی اینجاست
795
00:31:47,360 –> 00:31:48,159
بنابراین
796
00:31:48,159 –> 00:31:51,200
می دانیم که در یک گره یک a داریم
797
00:31:51,200 –> 00:31:52,159
داده ها
798
00:31:52,159 –> 00:31:54,080
دومین چیز مهم در پیوند
799
00:31:54,080 –> 00:31:57,120
لیست و به طور خاص در یک تک
800
00:31:57,120 –> 00:31:58,559
لیست پیوند
801
00:31:58,559 –> 00:32:01,440
این است که یک گره حاوی داده خواهد بود
802
00:32:01,440 –> 00:32:03,279
به همان خوبی
803
00:32:03,279 –> 00:32:05,039
حق مرجع است، بنابراین ما مجبور خواهیم شد
804
00:32:05,039 –> 00:32:08,320
اکنون یک مرجع ایجاد کنید ببینید که ما داریم
805
00:32:08,320 –> 00:32:10,559
نه ما نمی گوییم بعدی چیست
806
00:32:10,559 –> 00:32:12,960
گره سمت راست آن را اختصاص خواهد داد
807
00:32:12,960 –> 00:32:14,799
زمانی تعیین می شود که ما یک جدید ایجاد کنیم
808
00:32:14,799 –> 00:32:17,200
شیء این کلاس گره
809
00:32:17,200 –> 00:32:20,159
پس بیایید ببینیم چگونه به آه، بنابراین ما خواهیم داشت
810
00:32:20,159 –> 00:32:22,320
برای ایجاد مرجع و ما انجام خواهیم داد
811
00:32:22,320 –> 00:32:24,720
آن را به درستی null اختصاص دهید تا هر زمان که شما
812
00:32:24,720 –> 00:32:27,120
سعی خواهد کرد برخی از عناصر یا گره ها را اضافه کند
813
00:32:27,120 –> 00:32:29,760
در داخل این لیست به تنهایی پیوند داده شده است
814
00:32:29,760 –> 00:32:32,880
شما باید یک اشاره گر دیگر را اختصاص دهید
815
00:32:32,880 –> 00:32:36,000
و همچنین به null اشاره خواهد کرد
816
00:32:36,000 –> 00:32:37,440
بسیار خوب پس بیایید ببینیم چگونه می توانیم انجام دهیم
817
00:32:37,440 –> 00:32:38,480
این
818
00:32:38,480 –> 00:32:40,480
بیایید یک مرجع ایجاد کنیم
819
00:32:40,480 –> 00:32:43,279
آن را به عنوان re f
820
00:32:43,279 –> 00:32:46,080
و در ابتدا من آن را به عنوان اختصاص می دهم
821
00:32:46,080 –> 00:32:46,960
هیچ یک
822
00:32:46,960 –> 00:32:49,679
درست است بنابراین هیچ کدام اساساً به این معنی است
823
00:32:49,679 –> 00:32:51,600
این یک مرجع پوچ است
824
00:32:51,600 –> 00:32:54,640
درست است پس به هیچ چیز اشاره نمی کند
825
00:32:54,640 –> 00:32:55,519
سپس
826
00:32:55,519 –> 00:32:58,159
اگر شی دیگری ایجاد کنیم که
827
00:32:58,159 –> 00:32:59,840
گره دیگری است
828
00:32:59,840 –> 00:33:01,840
سپس ما باید مراقبت کنیم که ما
829
00:33:01,840 –> 00:33:05,360
باید این مرجع مرجع را دوباره تخصیص دهد
830
00:33:05,360 –> 00:33:07,200
به آن گره
831
00:33:07,200 –> 00:33:09,519
که در اینجا می توانید ببینید که اگر من داشته باشم
832
00:33:09,519 –> 00:33:11,840
ref را به null اختصاص دادم و اکنون هستم
833
00:33:11,840 –> 00:33:14,159
تخصیص یک آیتم جدید که باید بسازم
834
00:33:14,159 –> 00:33:16,159
مطمئن باشید که این مرجع
835
00:33:16,159 –> 00:33:18,960
یا مرجع به null اشاره نمی کند
836
00:33:18,960 –> 00:33:20,960
اما به این گره داده
837
00:33:20,960 –> 00:33:22,799
این زمانی مشخص خواهد شد که ما این کار را انجام دهیم
838
00:33:22,799 –> 00:33:26,320
مطالعه نحوه درج عناصر در داخل a
839
00:33:26,320 –> 00:33:28,720
لیست پیوند شده در اینجا ما فقط در حال مطالعه هستیم
840
00:33:28,720 –> 00:33:31,360
ساختار یک لیست پیوندی و شما
841
00:33:31,360 –> 00:33:33,919
می توانید ببینید که ساختار شامل یک گره است
842
00:33:33,919 –> 00:33:37,039
که دارای آیتم است که داده و
843
00:33:37,039 –> 00:33:39,440
مرجع صفر
844
00:33:39,440 –> 00:33:42,720
کار مهم بعدی
845
00:33:42,720 –> 00:33:44,480
است به
846
00:33:44,480 –> 00:33:47,840
که مرحله دوم ماست
847
00:33:49,039 –> 00:33:52,159
ایجاد لیست پیوندی واقعی است
848
00:33:52,159 –> 00:33:53,519
درست
849
00:33:53,519 –> 00:33:58,640
ما کلاس لیست پیوندی را ایجاد خواهیم کرد
850
00:34:00,080 –> 00:34:02,640
درست است بنابراین ما یک کلاس ایجاد می کنیم
851
00:34:02,640 –> 00:34:05,840
که لیست پیوندی است
852
00:34:05,840 –> 00:34:07,279
و
853
00:34:07,279 –> 00:34:09,280
این کلاس لیست لینگ اساسا خواهد بود
854
00:34:09,280 –> 00:34:11,199
نمایندگی کند
855
00:34:11,199 –> 00:34:13,280
نشانگر سر
856
00:34:13,280 –> 00:34:14,480
که اینجاست
857
00:34:14,480 –> 00:34:16,960
ما آن را به null اختصاص می دهیم و سپس ما
858
00:34:16,960 –> 00:34:20,239
به اضافه کردن این گره ها ادامه خواهد داد که
859
00:34:20,239 –> 00:34:22,960
که از این کلاس گره ما خواهد آمد
860
00:34:22,960 –> 00:34:25,520
به اضافه کردن این گره ها در داخل ادامه خواهد داد
861
00:34:25,520 –> 00:34:28,000
لیست پیوند شده و ما نیز خواهیم گرفت
862
00:34:28,000 –> 00:34:29,760
وقتی ما هستیم مراقب مراجع باشیم
863
00:34:29,760 –> 00:34:31,599
تلاش برای اضافه کردن عناصر به درستی بنابراین ما
864
00:34:31,599 –> 00:34:32,879
نیاز به مقداری
865
00:34:32,879 –> 00:34:34,879
کلاس لیست پیوندی که در واقع می تواند
866
00:34:34,879 –> 00:34:38,239
کل این ساختار داده را به درستی حفظ کنید
867
00:34:38,239 –> 00:34:40,800
زیرا گره فقط نشان دهنده آن است
868
00:34:40,800 –> 00:34:41,839
داده ها
869
00:34:41,839 –> 00:34:44,480
و مرجع اما لیست پیوندی ما
870
00:34:44,480 –> 00:34:47,119
کلاس داده های این کل را نگه می دارد
871
00:34:47,119 –> 00:34:48,399
لیست پیوند درست است
872
00:34:48,399 –> 00:34:51,599
بنابراین تمام گره های متصل به هم خواهند شد
873
00:34:51,599 –> 00:34:52,719
را تشکیل می دهند
874
00:34:52,719 –> 00:34:54,800
کلاس لیست پیوند داده شده است و ما آن را می دانیم
875
00:34:54,800 –> 00:34:57,280
در ابتدا چون هیچ داده ای در داخل وجود ندارد
876
00:34:57,280 –> 00:34:59,280
از لیست پیوندی یک سر ایجاد خواهیم کرد
877
00:34:59,280 –> 00:35:02,400
اشاره گر که به null اشاره می کند
878
00:35:02,400 –> 00:35:04,079
درست است
879
00:35:04,079 –> 00:35:05,760
اینجا من می روم
880
00:35:05,760 –> 00:35:08,720
سازنده را تعریف کنید
881
00:35:08,720 –> 00:35:12,320
که با استفاده از init است
882
00:35:12,400 –> 00:35:15,520
و سپس من می خواهم از a استفاده کنم
883
00:35:15,520 –> 00:35:19,040
پارامتر self اکنون به یاد داشته باشید که در uh
884
00:35:19,040 –> 00:35:21,359
لیست پیوند خالی است بنابراین نیازی نداریم
885
00:35:21,359 –> 00:35:23,040
برای ارائه هرگونه داده
886
00:35:23,040 –> 00:35:24,320
بنابراین ما ترک خواهیم کرد
887
00:35:24,320 –> 00:35:26,880
فقط یک پارامتر در اینجا
888
00:35:26,880 –> 00:35:29,040
اکنون می خواهیم ایجاد کنیم
889
00:35:29,040 –> 00:35:31,040
یک متغیر سر
890
00:35:31,040 –> 00:35:32,640
سر خود نقطه
891
00:35:32,640 –> 00:35:35,520
بنابراین هر زمان که ما یک
892
00:35:35,520 –> 00:35:37,280
شیء این کلاس
893
00:35:37,280 –> 00:35:39,599
ما در واقع یک رئیس آن را اختصاص می دهیم
894
00:35:39,599 –> 00:35:40,640
کلاس
895
00:35:40,640 –> 00:35:42,480
از آن شی درست است، به همین دلیل است که ما هستیم
896
00:35:42,480 –> 00:35:44,960
با استفاده از سر خود نقطه
897
00:35:44,960 –> 00:35:46,880
و بدیهی است که ما آن را تعیین می کنیم
898
00:35:46,880 –> 00:35:49,119
به عنوان هیچ، زیرا در ابتدا
899
00:35:49,119 –> 00:35:51,680
لیست پیوند خالی است، بنابراین من می توانم
900
00:35:51,680 –> 00:35:53,040
اینجا بنویس
901
00:35:53,040 –> 00:35:56,320
آن لیست پیوند یا دو l
902
00:35:56,320 –> 00:36:00,720
در ابتدا خالی است
903
00:36:00,720 –> 00:36:02,560
در حال حاضر ما داریم
904
00:36:02,560 –> 00:36:06,160
یک ساختار اساسی از کلاس گره ما و
905
00:36:06,160 –> 00:36:07,680
لیست پیوندی ما
906
00:36:07,680 –> 00:36:09,440
اکنون در آموزش بعدی خواهیم دید
907
00:36:09,440 –> 00:36:12,960
به بعد نحوه درج را خواهیم دید
908
00:36:12,960 –> 00:36:15,839
گره های داخل این لیست پیوندی
909
00:36:15,839 –> 00:36:18,320
و همچنین خواهیم دید که چگونه می توانیم در واقع
910
00:36:18,320 –> 00:36:20,960
آنها را به درستی چاپ کنید تا نحوه انجام آن را ببینیم
911
00:36:20,960 –> 00:36:22,960
در یک لیست پیوندی پیمایش کنید
912
00:36:22,960 –> 00:36:25,680
بنابراین اساساً من می خواهم اینجا بنویسم
913
00:36:25,680 –> 00:36:27,520
که عملیاتی که قرار است انجام دهیم
914
00:36:27,520 –> 00:36:31,200
انجام درج است
915
00:36:31,760 –> 00:36:34,800
و سپس پیمایش داخل را مطالعه خواهیم کرد
916
00:36:34,800 –> 00:36:36,800
از یک لیست پیوندی
917
00:36:36,800 –> 00:36:39,200
درست است بنابراین در آموزش بعدی به بعد ما
918
00:36:39,200 –> 00:36:40,960
قرار است اساسا از این استفاده کنند
919
00:36:40,960 –> 00:36:42,880
ساختار بنیادی
920
00:36:42,880 –> 00:36:44,480
که می بینید این دو مرحله هستند
921
00:36:44,480 –> 00:36:46,400
بسیار مهم است که ما یک گره ایجاد خواهیم کرد
922
00:36:46,400 –> 00:36:48,640
کلاس و یک کلاس لیست پیوندی
923
00:36:48,640 –> 00:36:51,359
ما این مراجع را به null اختصاص می دهیم
924
00:36:51,359 –> 00:36:53,440
و این سر به تهی
925
00:36:53,440 –> 00:36:55,839
و سپس ما قصد داریم از این استفاده کنیم
926
00:36:55,839 –> 00:36:56,640
گام
927
00:36:56,640 –> 00:36:58,480
و برای درج مقداری بیشتر حرکت خواهیم کرد
928
00:36:58,480 –> 00:36:59,760
عناصر بیشتر
929
00:36:59,760 –> 00:37:01,680
اکنون به یاد داشته باشید که درج می تواند از
930
00:37:01,680 –> 00:37:03,280
انواع متفاوت
931
00:37:03,280 –> 00:37:05,599
فرض کنید میخواهم عنصری را در آن وارد کنم
932
00:37:05,599 –> 00:37:08,000
شروع لیست پیوندی بنابراین ما
933
00:37:08,000 –> 00:37:10,320
باید مراقب بود که
934
00:37:10,320 –> 00:37:12,480
اگر من می خواهم عنصری را وارد کنم، اجازه دهید
935
00:37:12,480 –> 00:37:15,200
بگو من می خواهم 6 را در ابتدا وارد کنم
936
00:37:15,200 –> 00:37:17,839
از این نقطه من باید مطمئن شوم
937
00:37:17,839 –> 00:37:20,320
که این مرجع سر در حال حاضر اشاره می کند
938
00:37:20,320 –> 00:37:21,599
به این 6
939
00:37:21,599 –> 00:37:24,000
درست در این راه آن را به آن خواهد شد
940
00:37:24,000 –> 00:37:25,760
به اضافه شدن
941
00:37:25,760 –> 00:37:28,079
موقعیت اول در لیست پیوندی سمت راست
942
00:37:28,079 –> 00:37:31,359
به طور مشابه ما می توانیم برخی را تعریف کنیم
943
00:37:31,359 –> 00:37:34,720
شاخص خاصی که می خواهیم در آن قرار دهیم
944
00:37:34,720 –> 00:37:35,680
را
945
00:37:35,680 –> 00:37:38,480
یا یک عنصر جدید درج کنیم و همچنین می توانیم
946
00:37:38,480 –> 00:37:40,160
انجام دادن
947
00:37:40,160 –> 00:37:42,800
درج در انتهای لیست پیوند داده شده
948
00:37:42,800 –> 00:37:44,400
درست است بنابراین ما در طول مسیر حرکت خواهیم کرد
949
00:37:44,400 –> 00:37:47,119
لیست پیوند شده و هر زمان که ما تشخیص دهیم
950
00:37:47,119 –> 00:37:49,520
که لیست لینک مرجع است
951
00:37:49,520 –> 00:37:51,359
null خواهیم گفت که رسیده ایم
952
00:37:51,359 –> 00:37:52,400
پایان
953
00:37:52,400 –> 00:37:54,560
و در آن موقعیت ما را وارد خواهیم کرد
954
00:37:54,560 –> 00:37:55,920
گره
955
00:37:55,920 –> 00:37:58,640
در پیمایش ما فقط مدتی ایجاد خواهیم کرد
956
00:37:58,640 –> 00:38:00,400
حلقه که خواهد شد
957
00:38:00,400 –> 00:38:02,960
از مکانی به مکان دیگر بپریم و ما
958
00:38:02,960 –> 00:38:05,040
شروع به نمایش این مقادیر و
959
00:38:05,040 –> 00:38:06,400
آن را انجام خواهد داد
960
00:38:06,400 –> 00:38:08,240
تا زمانی که و مگر اینکه به عدد صفر برسیم
961
00:38:08,240 –> 00:38:10,079
موقعیت
962
00:38:10,079 –> 00:38:11,680
بنابراین این چیزی است که ما می خواهیم در آن انجام دهیم
963
00:38:11,680 –> 00:38:13,359
آموزش بعدی
964
00:38:13,359 –> 00:38:16,880
اساسا اول از همه اجازه دهید
965
00:38:16,880 –> 00:38:20,400
بیایید مرحله سه را نیز انجام دهیم
966
00:38:20,400 –> 00:38:23,119
که به
967
00:38:25,680 –> 00:38:28,960
که در اصل برای ایجاد شی است
968
00:38:28,960 –> 00:38:30,240
که هست
969
00:38:30,240 –> 00:38:34,160
برای ایجاد شی از
970
00:38:34,240 –> 00:38:36,640
لیست پیوندی درست
971
00:38:36,640 –> 00:38:38,800
بنابراین اکنون یک لیست پیوندی i ایجاد خواهیم کرد
972
00:38:38,800 –> 00:38:43,280
آن را به عنوان یک لیست پیوندی جدید فراخوانی می کند
973
00:38:43,280 –> 00:38:44,320
یا
974
00:38:44,320 –> 00:38:47,280
برای سادگی می خواهم آن را به عنوان بنویسم
975
00:38:47,280 –> 00:38:50,079
زیر خط جدید ll
976
00:38:50,079 –> 00:38:52,640
و سپس من می خواهم یک شی ایجاد کنم
977
00:38:52,640 –> 00:38:55,920
از کلاس لیست پیوندی
978
00:38:55,920 –> 00:38:58,400
مانند این، بنابراین اکنون می توانید این جدید را ببینید
979
00:38:58,400 –> 00:39:00,800
لیست پیوند اختصاص داده شده است
980
00:39:00,800 –> 00:39:02,880
یک اشاره گر سر دارد که اشاره می کند
981
00:39:02,880 –> 00:39:03,920
باطل شدن
982
00:39:03,920 –> 00:39:06,079
بنابراین از این به بعد ما خواهیم بود
983
00:39:06,079 –> 00:39:08,079
اجرا خواهیم کرد
984
00:39:08,079 –> 00:39:11,119
مرحله 4
985
00:39:11,359 –> 00:39:15,839
که برای درج عنصر است
986
00:39:16,240 –> 00:39:18,240
در
987
00:39:18,240 –> 00:39:21,760
انتهای لیست پیوندی درج شده در
988
00:39:21,760 –> 00:39:23,599
شروع از
989
00:39:23,599 –> 00:39:26,079
لیست پیوندی درست است
990
00:39:26,079 –> 00:39:27,440
اساسا
991
00:39:27,440 –> 00:39:30,320
کد این درج در شروع از است
992
00:39:30,320 –> 00:39:32,320
فقط سه خط اما بسیار است
993
00:39:32,320 –> 00:39:34,240
مهم برای درک
994
00:39:34,240 –> 00:39:37,440
چگونه مراجع در داخل کار می کنند
995
00:39:37,440 –> 00:39:39,760
این تابعی که ما به آن می رویم
996
00:39:39,760 –> 00:39:43,839
درست ایجاد کنید پس اول از همه
997
00:39:43,920 –> 00:39:46,160
این کدی است که قبلاً داشتیم
998
00:39:46,160 –> 00:39:47,280
نوشته شده است
999
00:39:47,280 –> 00:39:49,440
در این کد می توانید ببینید که من ایجاد کرده ام
1000
00:39:49,440 –> 00:39:52,079
یک کلاس گره که دارای یک داده و a
1001
00:39:52,079 –> 00:39:53,599
مرجع
1002
00:39:53,599 –> 00:39:56,560
که به صورت null مقداردهی اولیه می شود
1003
00:39:56,560 –> 00:39:57,920
زیرا
1004
00:39:57,920 –> 00:40:00,480
ما فقط می خواهیم گره هایی را با آن ایجاد کنیم
1005
00:40:00,480 –> 00:40:02,400
کمک این کلاس و پس از آن ما هستیم
1006
00:40:02,400 –> 00:40:03,520
قصد دارم به
1007
00:40:03,520 –> 00:40:06,160
آن را در داخل لیست پیوندی قرار دهید
1008
00:40:06,160 –> 00:40:08,880
در لیست پیوند داده شده مقداردهی اولیه می شود
1009
00:40:08,880 –> 00:40:11,440
با استفاده از یک سازنده Init
1010
00:40:11,440 –> 00:40:14,160
و می توانید ببینید که نشانگر سر دارد
1011
00:40:14,160 –> 00:40:16,800
که در ابتدا به null اشاره می کند
1012
00:40:16,800 –> 00:40:19,440
و این به این دلیل است که لیست پیوند داده شده است
1013
00:40:19,440 –> 00:40:21,280
در ابتدا خالی
1014
00:40:21,280 –> 00:40:23,599
دیدیم که داریم خواهیم داشت
1015
00:40:23,599 –> 00:40:26,480
برای ایجاد یک شی از این لیست ling
1016
00:40:26,480 –> 00:40:28,640
و اساساً شیئی که ما داریم
1017
00:40:28,640 –> 00:40:30,960
ایجاد ایجاد شده است
1018
00:40:30,960 –> 00:40:31,760
جدید
1019
00:40:31,760 –> 00:40:33,680
علامت زدن ll
1020
00:40:33,680 –> 00:40:34,560
درست
1021
00:40:34,560 –> 00:40:37,680
بنابراین اکنون می خواهیم درج را انجام دهیم
1022
00:40:37,680 –> 00:40:41,040
در ابتدای آن لیست پیوند داده شده است
1023
00:40:41,040 –> 00:40:44,800
در اینجا می خواهم یک تابع ایجاد کنم
1024
00:40:44,800 –> 00:40:48,560
و نام این تابع را درج می کنم
1025
00:40:48,560 –> 00:40:52,319
در عملکرد شروع
1026
00:40:52,319 –> 00:40:54,960
و در این تابع از آنجایی که ما خواهیم کرد
1027
00:40:54,960 –> 00:40:58,240
باید یک عنصر را درج کنید
1028
00:40:58,240 –> 00:41:01,680
من عنصر را در اینجا ارائه خواهم کرد
1029
00:41:01,680 –> 00:41:04,240
و همچنین یک پارامتر ارائه خواهم کرد
1030
00:41:04,240 –> 00:41:07,839
که خود است یعنی یک شیء است
1031
00:41:07,839 –> 00:41:10,079
از این کلاس لیست ling
1032
00:41:10,079 –> 00:41:12,160
و فقط اشاره ای به آن است
1033
00:41:12,160 –> 00:41:15,760
شی و سپس من نیز داده ها را ارائه خواهم کرد
1034
00:41:15,760 –> 00:41:18,480
درست است بنابراین در اینجا من فقط
1035
00:41:18,480 –> 00:41:21,359
از شیء کلاس لیست پیوندی استفاده کنید
1036
00:41:21,359 –> 00:41:24,560
و من از عملگر نقطه استفاده خواهم کرد
1037
00:41:24,560 –> 00:41:28,720
برای فراخوانی این تابع که insert در است
1038
00:41:28,720 –> 00:41:31,440
تابع شروع
1039
00:41:31,440 –> 00:41:34,160
و در داخل این مقداری داده ارائه خواهم کرد
1040
00:41:34,160 –> 00:41:36,720
فرض کنید من ارائه خواهم کرد
1041
00:41:36,720 –> 00:41:39,440
پنج در اینجا درست است، بنابراین ما می خواهیم
1042
00:41:39,440 –> 00:41:40,560
برای اضافه کردن
1043
00:41:40,560 –> 00:41:44,079
پنج در ابتدای لیست پیوندی
1044
00:41:44,079 –> 00:41:46,400
بنابراین ما باید این را تعریف کنیم
1045
00:41:46,400 –> 00:41:50,000
در اینجا کار کنید پس بیایید ببینیم چگونه
1046
00:41:50,000 –> 00:41:52,240
رویکرد رویکرد برنامه نویسی
1047
00:41:52,240 –> 00:41:55,200
زمانی خواهد بود که می خواهیم داده ای را وارد کنیم
1048
00:41:55,200 –> 00:41:56,560
داخل a
1049
00:41:56,560 –> 00:42:00,000
لیست پیوند داده شده به طوری که ما در ابتدا می دانیم
1050
00:42:00,000 –> 00:42:02,640
لیست پیوندی به عنوان سر آغاز می شود
1051
00:42:02,640 –> 00:42:04,319
اشاره گر
1052
00:42:04,319 –> 00:42:05,760
ما یک
1053
00:42:05,760 –> 00:42:08,079
اشاره گر سر که در ابتدا اشاره می کند
1054
00:42:08,079 –> 00:42:09,359
به a
1055
00:42:09,359 –> 00:42:11,680
هیچ مقدار یا مقدار صفر
1056
00:42:11,680 –> 00:42:14,079
من فقط هیچکدام را اینجا نمی نویسم
1057
00:42:14,079 –> 00:42:16,480
اکنون لیست پیوند شده خالی است اکنون آنچه می خواهم
1058
00:42:16,480 –> 00:42:20,560
برای انجام این کار این است که من می خواهم پنج را در این وارد کنم
1059
00:42:20,560 –> 00:42:24,560
لیست پیوند درست است من می خواهم پنج تا را درج کنم
1060
00:42:24,560 –> 00:42:29,680
آنچه می خواهم به آن برسم این است که می خواهم
1061
00:42:29,680 –> 00:42:30,720
اضافه کردن
1062
00:42:30,720 –> 00:42:33,440
پنج گره در این لیست پیوندی و
1063
00:42:33,440 –> 00:42:34,800
سپس من خواهم کرد
1064
00:42:34,800 –> 00:42:37,040
یک مرجع دیگر در اینجا ایجاد کنید
1065
00:42:37,040 –> 00:42:39,359
در واقع به null اشاره می کنیم
1066
00:42:39,359 –> 00:42:41,359
یا هیچ کدام
1067
00:42:41,359 –> 00:42:43,599
پس بیایید ببینیم چگونه باید تغییر کنیم
1068
00:42:43,599 –> 00:42:44,400
اینها
1069
00:42:44,400 –> 00:42:47,359
ارجاع به منظور درج یک عنصر
1070
00:42:47,359 –> 00:42:49,680
در ابتدای لیست پیوند شده
1071
00:42:49,680 –> 00:42:52,560
بنابراین اولین چیزی است
1072
00:42:52,560 –> 00:42:55,119
هر زمان که بخواهیم عنصری را وارد کنیم
1073
00:42:55,119 –> 00:42:57,520
در داخل یک لیست پیوندی اولین چیز
1074
00:42:57,520 –> 00:42:59,440
کاری که باید انجام دهیم این است که خواهیم داشت
1075
00:42:59,440 –> 00:43:01,440
برای ایجاد یک شی
1076
00:43:01,440 –> 00:43:03,200
از کلاس گره
1077
00:43:03,200 –> 00:43:04,079
درست
1078
00:43:04,079 –> 00:43:06,000
بنابراین ما باید یک شی از ایجاد کنیم
1079
00:43:06,000 –> 00:43:08,000
کلاس گره و ما باید عبور کنیم
1080
00:43:08,000 –> 00:43:09,280
داده
1081
00:43:09,280 –> 00:43:12,000
در اینجا داده ها 5 است
1082
00:43:12,000 –> 00:43:14,400
و در اینجا یک شی ایجاد می کنیم
1083
00:43:14,400 –> 00:43:17,440
که گره جدید خواهد بود
1084
00:43:17,440 –> 00:43:19,599
و پس از ایجاد یک شی از این
1085
00:43:19,599 –> 00:43:22,640
کلاس ما از قبل می دانیم که هر زمان که ما
1086
00:43:22,640 –> 00:43:25,599
یک شی از یک کلاس ایجاد کنید
1087
00:43:25,599 –> 00:43:28,319
در این راه ما در واقع تلاش می کنیم
1088
00:43:28,319 –> 00:43:31,520
آن را به حافظه اصلی اختصاص دهید
1089
00:43:31,520 –> 00:43:34,079
درست است بنابراین من می خواهم اینجا بنویسم
1090
00:43:34,079 –> 00:43:35,280
اختصاص دهد
1091
00:43:35,280 –> 00:43:37,520
حافظه اصلی
1092
00:43:37,520 –> 00:43:40,319
بنابراین در پشت صحنه این خط ob
1093
00:43:40,319 –> 00:43:42,720
هر زمان که یک شی را مقدار دهی اولیه کنیم
1094
00:43:42,720 –> 00:43:45,520
داده 5 در داخل ذخیره می شود
1095
00:43:45,520 –> 00:43:48,240
حافظه اصلی و همانطور که می دانیم وجود دارد
1096
00:43:48,240 –> 00:43:50,880
یک مرجع تهی
1097
00:43:50,880 –> 00:43:53,200
در داخل این کلاس بنابراین
1098
00:43:53,200 –> 00:43:55,119
در واقع ما می توانیم این نوع را ببینیم
1099
00:43:55,119 –> 00:43:58,800
پیاده سازی در حافظه اصلی
1100
00:43:58,800 –> 00:44:01,119
که در اینجا می توانید ببینید آن را دارد
1101
00:44:01,119 –> 00:44:02,319
داده ها
1102
00:44:02,319 –> 00:44:05,359
و در اینجا یک مرجع تهی دارد
1103
00:44:05,359 –> 00:44:08,560
پس بیایید اولین وظیفه خود را انجام دهیم که این است
1104
00:44:08,560 –> 00:44:12,160
ایجاد یک شی از
1105
00:44:12,800 –> 00:44:15,280
کلاس گره سمت راست
1106
00:44:15,280 –> 00:44:18,720
و داده هایی که می خواهم
1107
00:44:18,720 –> 00:44:20,960
پاس این یکی است که از این است
1108
00:44:20,960 –> 00:44:24,720
داده های تابع بنابراین من داده ها را اینجا می نویسم
1109
00:44:24,720 –> 00:44:27,280
بنابراین این اولین وظیفه ما هر زمان است
1110
00:44:27,280 –> 00:44:29,280
می خواهیم عنصری را وارد کنیم
1111
00:44:29,280 –> 00:44:31,760
ابتدا باید آن را تخصیص داد و این است
1112
00:44:31,760 –> 00:44:34,240
استفاده اصلی از این کلاس گره
1113
00:44:34,240 –> 00:44:37,440
پس از اینکه ما این خاص را اختصاص دادیم
1114
00:44:37,440 –> 00:44:39,599
چیزی که ما فقط باید انجام دهیم این هستیم
1115
00:44:39,599 –> 00:44:42,880
فقط باید آن را در داخل ما وارد کنیم
1116
00:44:42,880 –> 00:44:44,800
لیست پیوندی درست است، پس بیایید آن را ببینیم
1117
00:44:44,800 –> 00:44:47,839
وضعیت لیست پیوند ما در این مرحله
1118
00:44:47,839 –> 00:44:50,800
اکنون لیست پیوند دارای یک اشاره گر سر است که
1119
00:44:50,800 –> 00:44:53,440
در حال حاضر چیزی که من می خواهم به null اشاره می کند
1120
00:44:53,440 –> 00:44:55,040
انجام دادن است
1121
00:44:55,040 –> 00:44:58,000
استراتژی که من از آن استفاده خواهم کرد این است
1122
00:44:58,000 –> 00:45:01,200
فقط روی این خط در اینجا تمرکز کنید
1123
00:45:01,200 –> 00:45:04,000
این گره 5 است که می خواهم وارد کنم
1124
00:45:04,000 –> 00:45:06,240
اولین کاری که انجام خواهم داد این است که می توانیم
1125
00:45:06,240 –> 00:45:08,880
اینجا را از گره سر ببینید
1126
00:45:08,880 –> 00:45:11,359
هر مرجع گره سر
1127
00:45:11,359 –> 00:45:13,680
اشاره به شما می توانید ببینید سر است
1128
00:45:13,680 –> 00:45:16,160
در ابتدا به null اشاره می کند
1129
00:45:16,160 –> 00:45:19,359
و فرض کنید من می خواهم 4 را بعد از آن اضافه کنم
1130
00:45:19,359 –> 00:45:21,040
درج 5
1131
00:45:21,040 –> 00:45:23,040
کاری که من انجام خواهم داد هر زمان که بخواهم انجام خواهم داد
1132
00:45:23,040 –> 00:45:25,599
این عنصر را در ابتدای
1133
00:45:25,599 –> 00:45:26,480
را
1134
00:45:26,480 –> 00:45:29,119
این لیست پیوندی من فقط از آن استفاده خواهم کرد
1135
00:45:29,119 –> 00:45:31,280
نشانگر سر
1136
00:45:31,280 –> 00:45:33,119
که اشاره ای به اولی دارد
1137
00:45:33,119 –> 00:45:35,040
عنصر لیست پیوندی
1138
00:45:35,040 –> 00:45:38,240
و من آن را به این گره جدید اختصاص می دهم
1139
00:45:38,240 –> 00:45:40,720
که ما در اینجا اختصاص می دهیم تا ما
1140
00:45:40,720 –> 00:45:42,960
می خواهید یک عنصر را وارد کنید تا اول
1141
00:45:42,960 –> 00:45:44,160
وظیفه
1142
00:45:44,160 –> 00:45:46,400
ایجاد یک مرجع است که می خواهم به آن مراجعه کنم
1143
00:45:46,400 –> 00:45:47,839
اینجا بنویس
1144
00:45:47,839 –> 00:45:50,079
اولین وظیفه این است که
1145
00:45:50,079 –> 00:45:52,560
اختصاص دهد
1146
00:45:53,680 –> 00:45:56,400
مرجع
1147
00:45:57,280 –> 00:45:59,440
از
1148
00:45:59,440 –> 00:46:01,200
نشانگر سر
1149
00:46:01,200 –> 00:46:02,960
یا فقط سر
1150
00:46:02,960 –> 00:46:04,720
به گره جدید
1151
00:46:04,720 –> 00:46:07,119
درست است، بنابراین ابتدا این کار را انجام خواهیم داد
1152
00:46:07,119 –> 00:46:09,440
کار بسیار مهم
1153
00:46:09,440 –> 00:46:11,760
که برای تغییر ref
1154
00:46:11,760 –> 00:46:13,280
که به
1155
00:46:13,280 –> 00:46:15,520
فقط این را مقداردهی اولیه کنید
1156
00:46:15,520 –> 00:46:16,880
گره جدید
1157
00:46:16,880 –> 00:46:18,960
در داخل لیست پیوندی ما با اختصاص دادن
1158
00:46:18,960 –> 00:46:21,599
ارجاع گره سر به این گره
1159
00:46:21,599 –> 00:46:24,560
درست است پس بیایید ببینیم چگونه می توانیم این کار را انجام دهیم
1160
00:46:24,560 –> 00:46:27,119
اینجا در داخل شروع درج شده
1161
00:46:27,119 –> 00:46:28,480
عملکرد
1162
00:46:28,480 –> 00:46:31,440
من گره جدید را دارم
1163
00:46:31,440 –> 00:46:34,880
و مرجع این گره جدید است
1164
00:46:34,880 –> 00:46:38,160
dot ref می توانم از عملگر dot ref استفاده کنم
1165
00:46:38,160 –> 00:46:40,240
هر زمان که مقداردهی اولیه می کنیم، می توانید آن را ببینید
1166
00:46:40,240 –> 00:46:43,119
یک شی ما داده ها و مرجع را داریم
1167
00:46:43,119 –> 00:46:45,680
زیرا در کلاس گره می توانید ما را ببینید
1168
00:46:45,680 –> 00:46:48,240
داده ها را داشته باشید و ما مرجع را داریم
1169
00:46:48,240 –> 00:46:49,760
اینجا
1170
00:46:49,760 –> 00:46:52,160
بنابراین مرجع این گره جدید است
1171
00:46:52,160 –> 00:46:54,000
در واقع به هر چیزی اختصاص داده شده است
1172
00:46:54,000 –> 00:46:56,319
مرجع گره سر بود
1173
00:46:56,319 –> 00:46:57,839
قبلا
1174
00:46:57,839 –> 00:47:00,480
که سر خود نقطه است
1175
00:47:00,480 –> 00:47:03,520
self dot head به معنای خود یعنی آن
1176
00:47:03,520 –> 00:47:06,240
آیا به شیء این لینگ تعلق دارد
1177
00:47:06,240 –> 00:47:09,200
کلاس لیست که لیست ling جدید ما است
1178
00:47:09,200 –> 00:47:10,560
ll جدید
1179
00:47:10,560 –> 00:47:13,200
و head اساساً نشانگر سر است
1180
00:47:13,200 –> 00:47:15,760
از این کلاس لیست لینگ درست است
1181
00:47:15,760 –> 00:47:19,040
قبلاً هر کجا این نشانگر سر
1182
00:47:19,040 –> 00:47:21,280
اشاره می کرد به
1183
00:47:21,280 –> 00:47:24,079
ما فقط می خواهیم مطمئن شویم که این
1184
00:47:24,079 –> 00:47:27,040
گره جدید به آن مکان اشاره خواهد کرد
1185
00:47:27,040 –> 00:47:30,480
این تنها کاربرد اصلی این خط است
1186
00:47:30,480 –> 00:47:32,400
درست است بنابراین از این نمودار می توانید
1187
00:47:32,400 –> 00:47:33,920
در واقع اینجا را ببینید
1188
00:47:33,920 –> 00:47:36,640
که در تمام موارد اولین وظیفه
1189
00:47:36,640 –> 00:47:39,440
فرض کنید من می خواهم 4 را در اینجا وارد کنم
1190
00:47:39,440 –> 00:47:42,160
کاری که من انجام خواهم داد این است که آن را ضبط خواهم کرد
1191
00:47:42,160 –> 00:47:44,960
مرجع اشاره گر سر که است
1192
00:47:44,960 –> 00:47:48,000
سر خود نقطه ای که به 5 اشاره می کند
1193
00:47:48,000 –> 00:47:49,839
و سپس کاری که من انجام خواهم داد این است
1194
00:47:49,839 –> 00:47:50,960
این
1195
00:47:50,960 –> 00:47:54,160
4 همچنین دارای یک متغیر در ابتدا بود
1196
00:47:54,160 –> 00:47:55,920
خالی
1197
00:47:55,920 –> 00:47:57,760
اکنون به جای null می روم
1198
00:47:57,760 –> 00:48:01,359
دوباره آن را به اولین گره اختصاص دهید
1199
00:48:01,359 –> 00:48:04,079
درست است پس در اولین قدم ما هستیم
1200
00:48:04,079 –> 00:48:05,599
در واقع تلاش می کند
1201
00:48:05,599 –> 00:48:08,400
دسترسی به اولین گره به دلیل اصلی ما
1202
00:48:08,400 –> 00:48:11,200
انگیزه درج در شروع است
1203
00:48:11,200 –> 00:48:11,920
را
1204
00:48:11,920 –> 00:48:13,119
لیست لینگ
1205
00:48:13,119 –> 00:48:16,160
بعد از انجام این کار آخرین مرحله است
1206
00:48:16,160 –> 00:48:18,800
فقط این گره سر را اختصاص دهید
1207
00:48:18,800 –> 00:48:24,240
به گره جدید به سمت راست اختصاص دهید
1208
00:48:25,520 –> 00:48:27,599
سر
1209
00:48:27,599 –> 00:48:28,800
به
1210
00:48:28,800 –> 00:48:31,359
گره جدید
1211
00:48:31,520 –> 00:48:34,160
زیرا می دانیم که نشانگر سر
1212
00:48:34,160 –> 00:48:36,480
هدف خاصی در داخل دارد
1213
00:48:36,480 –> 00:48:39,359
لیست پیوندی که همیشه خواهد بود
1214
00:48:39,359 –> 00:48:41,119
اشاره به
1215
00:48:41,119 –> 00:48:43,280
اولین گره درست است، بنابراین اولین گره در حال رفتن است
1216
00:48:43,280 –> 00:48:45,440
گره جدید باشد
1217
00:48:45,440 –> 00:48:47,599
بنابراین در اینجا آنچه من می خواهم در آینده انجام دهم
1218
00:48:47,599 –> 00:48:48,800
گام
1219
00:48:48,800 –> 00:48:52,319
آیا من قصد دارم به خود نقطه سر اختصاص دهید
1220
00:48:52,319 –> 00:48:55,599
به این معنی است که من در حال تعیین مجدد سر هستم
1221
00:48:55,599 –> 00:48:58,079
ارجاع به گره جدید درست است
1222
00:48:58,079 –> 00:49:00,160
مساوی با
1223
00:49:00,160 –> 00:49:01,599
گره جدید
1224
00:49:01,599 –> 00:49:02,880
پس حالا این
1225
00:49:02,880 –> 00:49:05,200
اشاره گر این نشانگر سر به آن اشاره خواهد کرد
1226
00:49:05,200 –> 00:49:07,119
گره جدیدی که شروع آن است
1227
00:49:07,119 –> 00:49:08,000
ما
1228
00:49:08,000 –> 00:49:10,480
گره سمت راست لیست پیوندی ما در حال حاضر
1229
00:49:10,480 –> 00:49:13,040
به یاد داشته باشید که این دو خط باید باشد
1230
00:49:13,040 –> 00:49:16,160
به ترتیب خاص اگر بنویسید
1231
00:49:16,160 –> 00:49:17,200
این
1232
00:49:17,200 –> 00:49:19,599
اگر شما دوباره اگر شما این را اختصاص دهید
1233
00:49:19,599 –> 00:49:20,960
خاص
1234
00:49:20,960 –> 00:49:23,920
خط قبل از این خط ایجاد خواهد کرد
1235
00:49:23,920 –> 00:49:25,839
برخی از تفاوت ها
1236
00:49:25,839 –> 00:49:27,920
و این عمدتاً به این دلیل است که اگر بخواهید
1237
00:49:27,920 –> 00:49:29,599
خود را اختصاص دهد
1238
00:49:29,599 –> 00:49:30,960
سر نقطه
1239
00:49:30,960 –> 00:49:33,680
اگر خود نقطه سر را به جدید اختصاص دهید
1240
00:49:33,680 –> 00:49:34,960
ابتدا گره
1241
00:49:34,960 –> 00:49:37,119
سپس آنچه اتفاق خواهد افتاد این است
1242
00:49:37,119 –> 00:49:39,760
در اینجا می توانید ببینید
1243
00:49:39,760 –> 00:49:42,160
سپس اگر سعی کنید این سر را اختصاص دهید
1244
00:49:42,160 –> 00:49:45,440
ابتدا به گره جدید اشاره کنید
1245
00:49:45,440 –> 00:49:48,240
شما در واقع مرجع را از دست خواهید داد
1246
00:49:48,240 –> 00:49:49,359
این
1247
00:49:49,359 –> 00:49:51,200
گره سر که به سمت
1248
00:49:51,200 –> 00:49:53,359
اولین گره از لیست پاهای ما، بنابراین شما این کار را خواهید کرد
1249
00:49:53,359 –> 00:49:56,160
قادر به تخصیص نیست
1250
00:49:56,160 –> 00:49:58,400
اشاره گر یا مرجع یک جدید
1251
00:49:58,400 –> 00:50:01,280
گره داخل اولین عنصر که
1252
00:50:01,280 –> 00:50:03,599
در داخل لیست پیوندی وجود داشت
1253
00:50:03,599 –> 00:50:05,440
بنابراین به همین دلیل است که باید مطمئن شوید
1254
00:50:05,440 –> 00:50:07,839
که اینها به ترتیب هستند
1255
00:50:07,839 –> 00:50:09,920
اکنون در اینجا می توانید ببینید این سه مورد هستند
1256
00:50:09,920 –> 00:50:11,359
مراحل
1257
00:50:11,359 –> 00:50:13,839
بیایید ابتدا این سه مرحله را بازبینی کنیم
1258
00:50:13,839 –> 00:50:16,319
مرحله این است که به وضوح گره را اختصاص دهیم
1259
00:50:16,319 –> 00:50:19,040
آن را در داخل حافظه اختصاص دهید
1260
00:50:19,040 –> 00:50:21,839
بنابراین من فقط می خواهم اینجا بنویسم
1261
00:50:21,839 –> 00:50:24,240
تخصیص داخل حافظه
1262
00:50:24,240 –> 00:50:28,559
سپس ما باید در واقع آن را اختصاص دهیم
1263
00:50:28,559 –> 00:50:30,480
مرجع گره جدید که همان است
1264
00:50:30,480 –> 00:50:33,599
ارجاع گره جدید به خود
1265
00:50:33,599 –> 00:50:35,920
سر نقطه و ما می دانیم که سر
1266
00:50:35,920 –> 00:50:38,400
اشاره گر همیشه به اولین اشاره می کند
1267
00:50:38,400 –> 00:50:40,319
گره پس کاری که ما فقط انجام می دهیم
1268
00:50:40,319 –> 00:50:43,200
اساسا در اینجا ما در حال تخصیص آن هستیم
1269
00:50:43,200 –> 00:50:45,119
گره جدید به
1270
00:50:45,119 –> 00:50:46,640
اولین گره
1271
00:50:46,640 –> 00:50:49,760
درست است بنابراین ارجاع به
1272
00:50:49,760 –> 00:50:53,160
اولین گره
1273
00:50:56,640 –> 00:50:58,480
در اینجا چیزی است که ما انجام می دهیم
1274
00:50:58,480 –> 00:51:00,720
اکنون ما می دانیم که هدف از سر
1275
00:51:00,720 –> 00:51:02,960
گره برای اشاره به شروع است
1276
00:51:02,960 –> 00:51:05,599
گره بنابراین ما گره سر را دوباره اختصاص می دهیم
1277
00:51:05,599 –> 00:51:06,640
به
1278
00:51:06,640 –> 00:51:09,200
گره جدید بنابراین در این سه نکته در این
1279
00:51:09,200 –> 00:51:11,680
سه مرحله اساسی که ما در واقع می توانیم
1280
00:51:11,680 –> 00:51:13,680
عناصر را در ابتدای
1281
00:51:13,680 –> 00:51:16,720
اگر بخواهیم اکنون لیست پیوند داده شده است
1282
00:51:16,720 –> 00:51:18,640
چند عنصر دیگر را که می توانیم وارد کنیم
1283
00:51:18,640 –> 00:51:21,359
در واقع این کار را انجام دهید
1284
00:51:21,359 –> 00:51:23,760
با تغییر عناصر فرض کنید چهار
1285
00:51:23,760 –> 00:51:26,400
و سه
1286
00:51:26,800 –> 00:51:30,400
حالا بعد از شما این برنامه را اجرا کنید
1287
00:51:30,400 –> 00:51:32,720
قادر به تخصیص اینها در داخل خواهد بود
1288
00:51:32,720 –> 00:51:34,640
از خاطره خواهی فهمید که نیستی
1289
00:51:34,640 –> 00:51:36,640
آن را در خروجی می بینیم اما آن را
1290
00:51:36,640 –> 00:51:38,480
قبلا این کار را انجام داده است
1291
00:51:38,480 –> 00:51:40,480
اکنون در آموزش بعدی مطالعه خواهیم کرد
1292
00:51:40,480 –> 00:51:43,280
نحوه انجام پیمایش در لیست پیوند شده
1293
00:51:43,280 –> 00:51:45,839
و زمانی که ما سعی خواهیم کرد پیمایش را انجام دهیم
1294
00:51:45,839 –> 00:51:47,359
قادر خواهد بود
1295
00:51:47,359 –> 00:51:51,200
uh خروجی محتویات یا همه
1296
00:51:51,200 –> 00:51:53,119
گره های لیست پیوندی در
1297
00:51:53,119 –> 00:51:55,920
نظم خاص اساسا
1298
00:51:55,920 –> 00:51:57,920
پیمایش فقط است
1299
00:51:57,920 –> 00:52:00,720
از حرکت از یک گره به گره
1300
00:52:00,720 –> 00:52:03,200
آخرین گره از لیست پیوند شده
1301
00:52:03,200 –> 00:52:06,079
و ما این کار را برای چیزهای مختلف انجام می دهیم
1302
00:52:06,079 –> 00:52:08,720
برای مثال فرض کنید می خواهیم جستجو کنیم
1303
00:52:08,720 –> 00:52:10,640
برخی از عناصر
1304
00:52:10,640 –> 00:52:13,440
و بعد از جستجو فرض کنیم می خواهیم
1305
00:52:13,440 –> 00:52:16,319
آن عنصر را حذف کنید یا بگوییم
1306
00:52:16,319 –> 00:52:18,559
موقعیتی که می خواهیم
1307
00:52:18,559 –> 00:52:21,920
یک عنصر دیگر را درست وارد کنید
1308
00:52:21,920 –> 00:52:24,720
ما نیاز به پیمایش خواهیم داشت
1309
00:52:24,720 –> 00:52:27,119
بنابراین اساساً فرض کنید من یک دارم
1310
00:52:27,119 –> 00:52:29,839
لیست پیوند داده شده در اینجا
1311
00:52:30,079 –> 00:52:32,240
که 5 است
1312
00:52:32,240 –> 00:52:35,440
6 7 که دارای سه گره است
1313
00:52:35,440 –> 00:52:37,599
می دانیم که آخرین گره همیشه است
1314
00:52:37,599 –> 00:52:40,160
با اشاره به مقدار none یا null
1315
00:52:40,160 –> 00:52:41,760
مرجع
1316
00:52:41,760 –> 00:52:44,079
و این گره ها اشاره می کنند
1317
00:52:44,079 –> 00:52:47,119
چیزی شبیه به این و طبق معمول
1318
00:52:47,119 –> 00:52:49,520
اشاره گر سر به این گره اشاره می کند
1319
00:52:49,520 –> 00:52:52,559
اولین گره از لیست پیوندی ما
1320
00:52:52,559 –> 00:52:54,880
بنابراین ما در واقع استفاده می کنیم
1321
00:52:54,880 –> 00:52:56,160
پیمایش
1322
00:52:56,160 –> 00:52:59,200
با استفاده از این گره سر که یا ما است
1323
00:52:59,200 –> 00:53:01,280
می تواند بگوید مرجع سر
1324
00:53:01,280 –> 00:53:03,680
و ایده این است که وقتی ما هستیم
1325
00:53:03,680 –> 00:53:05,920
پیمایش در این زبان می توانیم
1326
00:53:05,920 –> 00:53:07,040
در حقیقت
1327
00:53:07,040 –> 00:53:10,160
به تمام عناصر داخل این دسترسی داشته باشید
1328
00:53:10,160 –> 00:53:11,359
لیست پیوندی
1329
00:53:11,359 –> 00:53:15,839
بنابراین اساساً پیمایش به این صورت پیش میرود
1330
00:53:16,880 –> 00:53:19,839
و آخرین گره به وضوح اشاره می کند
1331
00:53:19,839 –> 00:53:23,599
به گره تهی بنابراین ایده این است که
1332
00:53:23,599 –> 00:53:26,079
دسترسی داشته باشید یا سعی کنید به هر کدام دسترسی داشته باشید
1333
00:53:26,079 –> 00:53:28,960
عنصر لیست پیوندی و اساسا
1334
00:53:28,960 –> 00:53:30,800
از آنجایی که آخرین گره به آن اشاره می کند
1335
00:53:30,800 –> 00:53:33,280
مقدار null ما می توانیم در واقع از آن استفاده کنیم
1336
00:53:33,280 –> 00:53:35,440
بدانید که ما به پایان رسیده ایم
1337
00:53:35,440 –> 00:53:37,680
لیست پیوند شده و ما در واقع می توانیم متوقف کنیم
1338
00:53:37,680 –> 00:53:38,640
را
1339
00:53:38,640 –> 00:53:40,240
پیمایش سمت راست
1340
00:53:40,240 –> 00:53:42,240
پس بیایید ببینیم که چگونه می توانیم در واقع انجام دهیم
1341
00:53:42,240 –> 00:53:44,720
پیمایش در لیست پیوندی که است
1342
00:53:44,720 –> 00:53:45,599
اوه
1343
00:53:45,599 –> 00:53:47,839
ما سعی خواهیم کرد به هر کدام دسترسی داشته باشیم
1344
00:53:47,839 –> 00:53:50,160
عنصر و ما محتوا را نمایش خواهیم داد
1345
00:53:50,160 –> 00:53:52,559
از گره
1346
00:53:52,559 –> 00:53:55,920
پس از هر محور بنابراین در حین پیمایش ما
1347
00:53:55,920 –> 00:53:57,839
در حال نمایش دادن هستند
1348
00:53:57,839 –> 00:54:01,280
داده های داخل گره سمت راست
1349
00:54:01,280 –> 00:54:02,079
بنابراین
1350
00:54:02,079 –> 00:54:05,119
چگونه می توانیم این کار را در پایتون به درستی یا در داخل انجام دهیم
1351
00:54:05,119 –> 00:54:07,760
اساساً هر زبان برنامه نویسی دیگری
1352
00:54:07,760 –> 00:54:08,880
این هست
1353
00:54:08,880 –> 00:54:10,720
ساختارهای داده در پایتون
1354
00:54:10,720 –> 00:54:12,880
برنامه نویسی بنابراین ما در حال نوشتن خواهیم بود
1355
00:54:12,880 –> 00:54:14,400
کد برای
1356
00:54:14,400 –> 00:54:16,319
در برنامه نویسی پایتون اما
1357
00:54:16,319 –> 00:54:18,319
استراتژی در همان زمان باقی خواهد ماند
1358
00:54:18,319 –> 00:54:20,319
صرف نظر از چه چیزی
1359
00:54:20,319 –> 00:54:23,280
یک زبان برنامه نویسی که از آن استفاده می کنید
1360
00:54:23,280 –> 00:54:25,280
درست است پس کاری که ما انجام خواهیم داد این است که استفاده خواهیم کرد
1361
00:54:25,280 –> 00:54:27,119
نشانگر سر
1362
00:54:27,119 –> 00:54:29,200
زیرا به اولین گره اشاره می کند
1363
00:54:29,200 –> 00:54:31,680
ما از آن استفاده خواهیم کرد و به روز رسانی ادامه خواهیم داد
1364
00:54:31,680 –> 00:54:33,599
این نشانگر سر
1365
00:54:33,599 –> 00:54:35,760
تا و مگر ارزش سر
1366
00:54:35,760 –> 00:54:38,960
اشاره گر به سمت راست null اشاره می کند
1367
00:54:38,960 –> 00:54:41,040
بنابراین ما می دانیم که نشانگر سر است
1368
00:54:41,040 –> 00:54:43,839
همیشه به اولین گره اشاره می کند بنابراین ما
1369
00:54:43,839 –> 00:54:45,680
نمی خواهم
1370
00:54:45,680 –> 00:54:47,839
ظروف سرباز یا مسافر با اشاره گر سر ما نیست
1371
00:54:47,839 –> 00:54:49,359
خواستن
1372
00:54:49,359 –> 00:54:51,440
مرجع اشاره گر سر را تغییر دهید
1373
00:54:51,440 –> 00:54:53,359
بنابراین کاری که ما انجام خواهیم داد این است که ایجاد خواهیم کرد
1374
00:54:53,359 –> 00:54:55,119
برخی موقتی
1375
00:54:55,119 –> 00:54:58,079
مرجع که یک متغیر خواهد بود و
1376
00:54:58,079 –> 00:55:00,319
آن را اختصاص خواهیم داد
1377
00:55:00,319 –> 00:55:01,760
مانند
1378
00:55:01,760 –> 00:55:03,599
نشانگر سر
1379
00:55:03,599 –> 00:55:06,240
و سپس ما می توانیم انجام دهیم این است که ما می توانیم این را به روز کنیم
1380
00:55:06,240 –> 00:55:08,480
مقدار دما
1381
00:55:08,480 –> 00:55:10,720
با رسیدن به تک تک عناصر تا
1382
00:55:10,720 –> 00:55:13,040
نشانگر سر تغییر نخواهد کرد
1383
00:55:13,040 –> 00:55:15,440
درست است، بنابراین اولین قدم اختصاص دادن یک است
1384
00:55:15,440 –> 00:55:17,440
اشاره گر موقتی که به آن اشاره می کند
1385
00:55:17,440 –> 00:55:19,040
نشانگر سر
1386
00:55:19,040 –> 00:55:21,280
به یاد داشته باشید که یک چیز سر به آن اشاره می کند
1387
00:55:21,280 –> 00:55:23,040
اولین گره در اینجا تا زمانی که ما
1388
00:55:23,040 –> 00:55:25,119
دما را برابر با head بنویسید
1389
00:55:25,119 –> 00:55:28,640
temp نیز به گره اول اشاره می کند
1390
00:55:28,640 –> 00:55:30,240
اکنون کاری که ما انجام خواهیم داد این است که یک را اجرا خواهیم کرد
1391
00:55:30,240 –> 00:55:31,599
حلقه while
1392
00:55:31,599 –> 00:55:34,640
داخل این حلقه while
1393
00:55:34,640 –> 00:55:36,559
ما می توانیم ببینیم که این مدت را اجرا خواهیم کرد
1394
00:55:36,559 –> 00:55:37,359
حلقه
1395
00:55:37,359 –> 00:55:41,040
تا و مگر اینکه مقدار m برسد
1396
00:55:41,040 –> 00:55:41,920
خالی
1397
00:55:41,920 –> 00:55:43,520
درست
1398
00:55:43,520 –> 00:55:47,440
بنابراین ما به روز رسانی این مقدار m ادامه خواهیم داد
1399
00:55:47,440 –> 00:55:49,599
از یک عنصر به عنصر دیگر و سپس
1400
00:55:49,599 –> 00:55:52,480
به این مقدار تهی که می توانیم اشاره می کند
1401
00:55:52,480 –> 00:55:53,920
متوقف کردن
1402
00:55:53,920 –> 00:55:56,079
حلقه while می توانیم از این مقدار خارج شویم
1403
00:55:56,079 –> 00:55:57,119
درست
1404
00:55:57,119 –> 00:56:00,880
بنابراین چگونه برای به روز رسانی این موقت
1405
00:56:00,880 –> 00:56:03,040
مرجع بیایید ببینیم که
1406
00:56:03,040 –> 00:56:06,799
اکنون می دانیم که هر گره دارای آن است
1407
00:56:06,799 –> 00:56:10,799
یک آیتم داده و یک مرجع مرجع که است
1408
00:56:10,799 –> 00:56:12,240
اینجا
1409
00:56:12,240 –> 00:56:14,839
درست است پس کاری که ما انجام خواهیم داد این است که حفظ خواهیم کرد
1410
00:56:14,839 –> 00:56:17,440
به روز رسانی در هر مرحله ما حفظ خواهیم کرد
1411
00:56:17,440 –> 00:56:19,920
به روز رسانی این اشاره گر موقت
1412
00:56:19,920 –> 00:56:21,760
بنابراین اکنون می توانید در ابتدا ببینید
1413
00:56:21,760 –> 00:56:24,240
تکرار اشاره گر موقت در حال اشاره است
1414
00:56:24,240 –> 00:56:25,760
به گره اول
1415
00:56:25,760 –> 00:56:27,680
من آن را اختصاص خواهم داد
1416
00:56:27,680 –> 00:56:31,359
به نقطه دما ref
1417
00:56:31,359 –> 00:56:33,280
مرجع
1418
00:56:33,280 –> 00:56:35,599
و وقتی این کار را انجام می دهیم چه اتفاقی می افتد
1419
00:56:35,599 –> 00:56:38,480
به روز رسانی این است که شما می توانید ببینید که در ابتدا
1420
00:56:38,480 –> 00:56:40,799
گره یک اشاره گر مرجع دارد که این است
1421
00:56:40,799 –> 00:56:43,359
که به گره بعدی در داخل اشاره خواهد کرد
1422
00:56:43,359 –> 00:56:46,160
از لیست پیوندها، بنابراین اگر دما را بنویسم
1423
00:56:46,160 –> 00:56:49,520
برابر با نقطه دمای ref دمای خواهد بود
1424
00:56:49,520 –> 00:56:50,880
به روز شود
1425
00:56:50,880 –> 00:56:53,599
به این مرجع که نقطه پایه است
1426
00:56:53,599 –> 00:56:56,480
مرجع به من 6 حق می دهد
1427
00:56:56,480 –> 00:56:58,640
زیرا دما اکنون به این اشاره دارد
1428
00:56:58,640 –> 00:56:59,599
گره
1429
00:56:59,599 –> 00:57:03,839
بنابراین اکنون دما در اینجا به روز می شود
1430
00:57:03,839 –> 00:57:06,160
بنابراین دما هر چند وقت یکبار به اینجا و دوباره خواهد رفت
1431
00:57:06,160 –> 00:57:08,079
شرایط بررسی می شود
1432
00:57:08,079 –> 00:57:10,880
حالا می بینیم که تهی نیست
1433
00:57:10,880 –> 00:57:14,400
بنابراین دوباره مقدار m را به روز می کنیم
1434
00:57:14,400 –> 00:57:16,720
همانطور که اکنون می بینید که دما اکنون نشان می دهد
1435
00:57:16,720 –> 00:57:19,200
در اینجا بنابراین نقطه دمای ref
1436
00:57:19,200 –> 00:57:21,760
اشاره گر بعدی را به من می دهد
1437
00:57:21,760 –> 00:57:23,839
که گره بعدی است
1438
00:57:23,839 –> 00:57:24,960
7
1439
00:57:24,960 –> 00:57:26,559
و ما این را به طور موقت به روز خواهیم کرد
1440
00:57:26,559 –> 00:57:28,799
اشاره گر به اشاره به
1441
00:57:28,799 –> 00:57:31,440
آخرین گره که گره هفتم است
1442
00:57:31,440 –> 00:57:34,720
و دوباره temp dot refs است
1443
00:57:34,720 –> 00:57:36,799
اکنون به من null می دهد و دوباره i
1444
00:57:36,799 –> 00:57:38,079
آن را به روز خواهد کرد
1445
00:57:38,079 –> 00:57:40,799
بنابراین دما برابر صفر خواهد بود
1446
00:57:40,799 –> 00:57:43,520
وقتی هستیم به پایان رسیده ایم
1447
00:57:43,520 –> 00:57:44,880
لیست پیوندی
1448
00:57:44,880 –> 00:57:46,960
و از آنجایی که این شرط به اینجا خواهد رفت
1449
00:57:46,960 –> 00:57:49,280
و زمانی که ما آن را بررسی کنیم حلقه while
1450
00:57:49,280 –> 00:57:52,160
درست متوقف خواهد شد، پس بیایید ببینیم چگونه می توانیم
1451
00:57:52,160 –> 00:57:53,280
این را بنویس
1452
00:57:53,280 –> 00:57:55,920
پیاده سازی در پایتون
1453
00:57:55,920 –> 00:57:59,040
من دفترچه یادداشت jupyter را اینجا باز می کنم
1454
00:57:59,040 –> 00:58:01,599
اکنون می توانید اینجا را ببینید
1455
00:58:01,599 –> 00:58:03,520
ما لیست پیوندی جدید را در ایجاد کرده ایم
1456
00:58:03,520 –> 00:58:06,640
آموزش قبلی که قرار داده ایم
1457
00:58:06,640 –> 00:58:09,760
سه عنصر پنج چهار و سه
1458
00:58:09,760 –> 00:58:11,359
و ما آنها را در قسمت قرار داده ایم
1459
00:58:11,359 –> 00:58:13,280
شروع لیست پیوندی
1460
00:58:13,280 –> 00:58:15,200
اکنون می خواهیم شماره گام را انجام دهیم
1461
00:58:15,200 –> 00:58:16,640
پنج
1462
00:58:16,640 –> 00:58:18,319
در مرحله شماره پنج که می رویم
1463
00:58:18,319 –> 00:58:20,559
تابع تراورس را فراخوانی کنید
1464
00:58:20,559 –> 00:58:22,799
با استفاده از لیست پیوند، ما جدید را داریم
1465
00:58:22,799 –> 00:58:24,720
لیست پیوند به عنوان
1466
00:58:24,720 –> 00:58:27,119
به عنوان مثال ما هر سه مورد را داریم
1467
00:58:27,119 –> 00:58:29,040
عناصر درست است تا بتوانید لینک جدید را ببینید
1468
00:58:29,040 –> 00:58:31,359
لیست درج نقطه در شروع
1469
00:58:31,359 –> 00:58:34,720
بنابراین این شی ll جدید دارد
1470
00:58:34,720 –> 00:58:38,640
حالا بیایید این سه گره را طی کنیم
1471
00:58:38,640 –> 00:58:40,559
برای آن من یک تراورس ایجاد کرده ام
1472
00:58:40,559 –> 00:58:41,760
عملکرد
1473
00:58:41,760 –> 00:58:44,319
و در اینجا می توانید لینک کلاس را ببینید
1474
00:58:44,319 –> 00:58:46,960
لیستی که در اینجا است که ما در آن انجام داده ایم
1475
00:58:46,960 –> 00:58:48,880
گام دوم
1476
00:58:48,880 –> 00:58:50,720
من ایجاد کرده ام
1477
00:58:50,720 –> 00:58:52,799
تابع که تابع تراورس است
1478
00:58:52,799 –> 00:58:54,720
در اینجا می توانید آن را ببینید
1479
00:58:54,720 –> 00:58:57,040
ما در اینجا پارامتر self را منتقل می کنیم
1480
00:58:57,040 –> 00:58:59,680
زیرا به آن اشاره خواهد کرد
1481
00:58:59,680 –> 00:59:01,760
آن را به ما مرجع از
1482
00:59:01,760 –> 00:59:05,119
شیء که ll جدید است که هست
1483
00:59:05,119 –> 00:59:07,280
که لیست پیوندی است که ما داریم
1484
00:59:07,280 –> 00:59:08,880
درست ایجاد کرد
1485
00:59:08,880 –> 00:59:09,680
بنابراین
1486
00:59:09,680 –> 00:59:11,440
در این
1487
00:59:11,440 –> 00:59:13,119
عملکردی که می توانید ببینید
1488
00:59:13,119 –> 00:59:15,760
این کدی است که من نوشته ام
1489
00:59:15,760 –> 00:59:18,079
ابتدا اجازه دهید نگاهی به این بیندازیم
1490
00:59:18,079 –> 00:59:20,480
شرط در اینجا این می گوید که اگر
1491
00:59:20,480 –> 00:59:22,319
اشاره گر سر به نقطه صفر اشاره می کند
1492
00:59:22,319 –> 00:59:23,599
موقعیت
1493
00:59:23,599 –> 00:59:26,559
بنابراین اگر self.head هیچ کدام نیست، ما به آن می رویم
1494
00:59:26,559 –> 00:59:28,720
چاپ کنید که لیست پیوند شده خالی است و
1495
00:59:28,720 –> 00:59:30,480
قرار است برگردیم
1496
00:59:30,480 –> 00:59:33,839
از این تابع به سمت راست
1497
00:59:34,000 –> 00:59:37,520
در غیر این صورت اگر سر درست نیست
1498
00:59:37,520 –> 00:59:39,440
اشاره به null به این معنی است که وجود دارد
1499
00:59:39,440 –> 00:59:42,160
برخی از موارد داخل یک لیست پیوندی
1500
00:59:42,160 –> 00:59:44,880
اولین قدم این است که دما را به عنوان
1501
00:59:44,880 –> 00:59:47,040
اشاره گر سر شما می توانید ببینید که ما انجام داده ایم
1502
00:59:47,040 –> 00:59:49,680
دما برابر است با self.head
1503
00:59:49,680 –> 00:59:51,680
حلقه while را نوشته ایم که
1504
00:59:51,680 –> 00:59:53,839
در حالی که دما به نقطه صفر اشاره نمی کند
1505
00:59:53,839 –> 00:59:57,200
موقعیت یا در حالی که دمای هیچ کدام نیست
1506
00:59:57,200 –> 01:00:00,400
ما می خواهیم مقدار را به درستی چاپ کنیم
1507
01:00:00,400 –> 01:00:02,880
کجا یا می توانم بنویسم که ما هستیم
1508
01:00:02,880 –> 01:00:06,079
در واقع مقدار را در اینجا نمایش می دهد
1509
01:00:06,079 –> 01:00:08,480
بنابراین ما موقت را چاپ خواهیم کرد
1510
01:00:08,480 –> 01:00:11,440
مورد نقطه اشاره گر که داده های آن است
1511
01:00:11,440 –> 01:00:12,400
را
1512
01:00:12,400 –> 01:00:15,200
گره ای که دما به سمت راست اشاره می کند
1513
01:00:15,200 –> 01:00:17,920
ما در اینجا یک فضای خالی خواهیم گذاشت
1514
01:00:17,920 –> 01:00:20,240
و در خط بعدی می توانید از
1515
01:00:20,240 –> 01:00:22,319
تورفتگی یا شما می توانید از
1516
01:00:22,319 –> 01:00:24,079
فاصله ای که این دو خط هستند
1517
01:00:24,079 –> 01:00:26,400
متعلق به این حلقه while
1518
01:00:26,400 –> 01:00:28,480
بنابراین در این در حالی که حلقه آنچه که من می خواهم
1519
01:00:28,480 –> 01:00:29,599
انجام دادن است
1520
01:00:29,599 –> 01:00:31,520
من می خواهم دوباره اختصاص داده یا به روز کنم
1521
01:00:31,520 –> 01:00:33,040
ارزش از
1522
01:00:33,040 –> 01:00:35,839
اشاره موقت برای اشاره به دما
1523
01:00:35,839 –> 01:00:40,240
مرجع نقطه که در اصل است
1524
01:00:40,240 –> 01:00:43,240
اشاره می کند
1525
01:00:43,680 –> 01:00:46,160
به
1526
01:00:46,880 –> 01:00:49,040
به سمت راست گره بعدی
1527
01:00:49,040 –> 01:00:50,559
بنابراین
1528
01:00:50,559 –> 01:00:52,880
اینگونه می توانیم پیمایش را انجام دهیم و اگر ما
1529
01:00:52,880 –> 01:00:54,480
می خواهند اجرا کنند
1530
01:00:54,480 –> 01:00:57,040
اوه جستجو ما می توانیم آن را در داخل این انجام دهیم
1531
01:00:57,040 –> 01:00:59,200
حلقه while ما می توانیم به هر کدام دسترسی داشته باشیم
1532
01:00:59,200 –> 01:01:00,480
عنصر در اینجا
1533
01:01:00,480 –> 01:01:02,400
در آموزش بعدی نحوه انجام این کار را خواهیم دید
1534
01:01:02,400 –> 01:01:03,359
حذف
1535
01:01:03,359 –> 01:01:05,760
عناصر از لیست پیوند اگر شما
1536
01:01:05,760 –> 01:01:08,319
این برنامه را می توانید در اینجا ببینید
1537
01:01:08,319 –> 01:01:10,400
ما در واقع در خروجی نمایش می دهیم
1538
01:01:10,400 –> 01:01:12,000
سه چهار پنج
1539
01:01:12,000 –> 01:01:14,720
بنابراین ابتدا پنج در داخل وارد می شود
1540
01:01:14,720 –> 01:01:16,880
لیست پیوند شده سپس در ابتدای
1541
01:01:16,880 –> 01:01:18,960
لیست پیوندی چهار درج شده و سپس
1542
01:01:18,960 –> 01:01:19,839
سه
1543
01:01:19,839 –> 01:01:21,680
درست است پس این همان ها هستند
1544
01:01:21,680 –> 01:01:23,680
محتویات لیست پیوندی چگونه به
1545
01:01:23,680 –> 01:01:26,559
یک گره را از لیست پیوند شده حذف کنید
1546
01:01:26,559 –> 01:01:29,680
حذف از یک لیست پیوندی یک است
1547
01:01:29,680 –> 01:01:32,960
کمی مشکل است زیرا ما هستیم
1548
01:01:32,960 –> 01:01:34,400
قصد دارم به
1549
01:01:34,400 –> 01:01:37,440
مدیریت بسیاری از مراجع برای حذف
1550
01:01:37,440 –> 01:01:40,160
عنصر از لیست پیوندی درست است
1551
01:01:40,160 –> 01:01:42,720
لطفا توجه کنید چون اینطور نیست
1552
01:01:42,720 –> 01:01:46,000
به آسانی درج درست
1553
01:01:46,000 –> 01:01:46,799
بنابراین
1554
01:01:46,799 –> 01:01:48,960
کاری که من می خواهم در اینجا انجام دهم این است که اجازه دهید
1555
01:01:48,960 –> 01:01:53,200
بیایید ابتدا یک لیست پیوندی نمونه برداریم
1556
01:01:53,200 –> 01:01:56,160
با برخی از گره ها فرض کنید 1
1557
01:01:56,160 –> 01:01:58,400
3
1558
01:01:58,559 –> 01:02:00,799
5
1559
01:02:00,799 –> 01:02:03,200
8
1560
01:02:03,760 –> 01:02:06,799
و بیایید یکی دیگر را برداریم و بگوییم
1561
01:02:06,799 –> 01:02:08,880
این لیست پیوندی ما است که می دانیم
1562
01:02:08,880 –> 01:02:13,119
آخرین عنصر همیشه به آن اشاره می کند
1563
01:02:13,119 –> 01:02:15,680
مقدار null یا مرجع صفر
1564
01:02:15,680 –> 01:02:17,440
اولین گره
1565
01:02:17,440 –> 01:02:20,240
داشتن اشاره گر سر است که ما نیز
1566
01:02:20,240 –> 01:02:22,480
به عنوان گره سر تماس بگیرید
1567
01:02:22,480 –> 01:02:25,280
و ما مراجع منظم مانند
1568
01:02:25,280 –> 01:02:27,760
این حق
1569
01:02:27,760 –> 01:02:31,039
حالا بیایید بگوییم که من می خواهم
1570
01:02:31,039 –> 01:02:33,280
یک عنصر را از این پیوند حذف کنید
1571
01:02:33,280 –> 01:02:35,280
بیایید بگوییم عنصری که من می خواهم
1572
01:02:35,280 –> 01:02:36,880
حذف
1573
01:02:36,880 –> 01:02:39,200
است
1574
01:02:39,520 –> 01:02:42,480
پنج در اینجا درست بیایید پنج
1575
01:02:42,480 –> 01:02:44,400
بنابراین تابع حذف را فراخوانی می کنیم
1576
01:02:44,400 –> 01:02:45,839
با استفاده از
1577
01:02:45,839 –> 01:02:48,240
شیء این کلاس لیست پیوندی را خواهیم کرد
1578
01:02:48,240 –> 01:02:50,720
تابع حذف را ایجاد کنید
1579
01:02:50,720 –> 01:02:53,520
داخل کلاس لیست پیوندی و سپس
1580
01:02:53,520 –> 01:02:55,200
این عنصر را از قسمت حذف می کند
1581
01:02:55,200 –> 01:02:56,319
لیست پیوندی
1582
01:02:56,319 –> 01:02:59,359
بسیار خوب پس بیایید ببینیم چگونه می توانیم حذف کنیم
1583
01:02:59,359 –> 01:03:02,000
عنصر 5 مراحل خاصی دارد
1584
01:03:02,000 –> 01:03:04,240
که قراره دنبالش کنیم
1585
01:03:04,240 –> 01:03:05,839
قدم اول
1586
01:03:05,839 –> 01:03:10,960
در واقع پیمودن سمت راست است
1587
01:03:10,960 –> 01:03:14,480
ابتدا باید به سمت
1588
01:03:14,480 –> 01:03:16,720
گره ای که می خواهیم آن را حذف کنیم
1589
01:03:16,720 –> 01:03:19,200
ما می توانیم چیزی را به درستی روی آن اجرا کنیم
1590
01:03:19,200 –> 01:03:21,680
و می دانیم که اگر بخواهیم پیمایش کنیم
1591
01:03:21,680 –> 01:03:23,920
ابتدا باید به آن گره برسیم
1592
01:03:23,920 –> 01:03:25,920
یک حلقه while ایجاد کنید
1593
01:03:25,920 –> 01:03:28,319
که از سر گره و آن اجرا خواهد شد
1594
01:03:28,319 –> 01:03:32,799
بهروزرسانی موقت ادامه خواهد یافت
1595
01:03:32,799 –> 01:03:34,559
گره ای که ایجاد خواهیم کرد
1596
01:03:34,559 –> 01:03:37,119
درست اول ما یک موقت ایجاد می کنیم
1597
01:03:37,119 –> 01:03:40,160
مرجع که برابر با
1598
01:03:40,160 –> 01:03:42,160
مرجع سر
1599
01:03:42,160 –> 01:03:44,880
در حال حاضر ما یک اشاره گر موقت داریم
1600
01:03:44,880 –> 01:03:47,680
که به گره سر اشاره می کند
1601
01:03:47,680 –> 01:03:49,599
اینجا
1602
01:03:49,599 –> 01:03:52,160
و ما به روز رسانی مقدار آن ادامه خواهیم داد
1603
01:03:52,160 –> 01:03:56,559
دما به عنوان دما برابر است
1604
01:03:56,559 –> 01:03:57,520
دما
1605
01:03:57,520 –> 01:03:59,839
نقطه
1606
01:03:59,839 –> 01:04:02,880
ref که مرجع است
1607
01:04:02,880 –> 01:04:06,319
و ما یک قانون در حالی اجرا می کنیم
1608
01:04:06,319 –> 01:04:08,720
که خواهد رفت تا و مگر اینکه مقدار
1609
01:04:08,720 –> 01:04:10,799
از دما است
1610
01:04:10,799 –> 01:04:11,599
اوه
1611
01:04:11,599 –> 01:04:14,079
برابر نیست
1612
01:04:14,079 –> 01:04:15,280
هیچکدام درست نیست
1613
01:04:15,280 –> 01:04:16,880
بنابراین ما این را اجرا خواهیم کرد
1614
01:04:16,880 –> 01:04:19,599
حلقه while و ما در این تراورس خواهیم کرد
1615
01:04:19,599 –> 01:04:20,799
لیست پیوند
1616
01:04:20,799 –> 01:04:23,440
اما به یاد داشته باشید که ما باید متوقف شویم
1617
01:04:23,440 –> 01:04:25,440
این حلقه while
1618
01:04:25,440 –> 01:04:27,760
که این است که ما باید جلوی آن را بگیریم
1619
01:04:27,760 –> 01:04:30,319
مقدار موقت برای به روز رسانی
1620
01:04:30,319 –> 01:04:32,480
به مقدار بعدی
1621
01:04:32,480 –> 01:04:35,119
هر زمان که به گره ای می رسیم که ما
1622
01:04:35,119 –> 01:04:37,599
مایل به حذف درست
1623
01:04:37,599 –> 01:04:38,400
بنابراین
1624
01:04:38,400 –> 01:04:40,720
در این حلقه while می توانید موقت را ببینید
1625
01:04:40,720 –> 01:04:43,119
در ابتدا آن را به این اشاره می کند
1626
01:04:43,119 –> 01:04:45,520
یک بار ارزش گذاری کنید بنابراین تهی نیست
1627
01:04:45,520 –> 01:04:48,480
مقدار موقت که به روز می شود
1628
01:04:48,480 –> 01:04:49,839
اینجا
1629
01:04:49,839 –> 01:04:52,160
بنابراین اکنون دما اشاره خواهد کرد
1630
01:04:52,160 –> 01:04:53,200
در
1631
01:04:53,200 –> 01:04:55,599
3
1632
01:04:55,599 –> 01:04:57,760
درست است، بنابراین ما به به روز رسانی مقدار ادامه خواهیم داد
1633
01:04:57,760 –> 01:04:58,480
از
1634
01:04:58,480 –> 01:05:01,359
این اشاره گر موقت با توجه به الف
1635
01:05:01,359 –> 01:05:03,920
شرط درست
1636
01:05:03,920 –> 01:05:06,799
شرایط چیست
1637
01:05:06,799 –> 01:05:08,640
شرط است
1638
01:05:08,640 –> 01:05:10,400
که قرار است بنویسیم کدام است
1639
01:05:10,400 –> 01:05:12,559
شرط اگر این است که ما
1640
01:05:12,559 –> 01:05:14,000
مقایسه خواهد کرد
1641
01:05:14,000 –> 01:05:16,799
ارزش گره
1642
01:05:16,799 –> 01:05:19,119
که اشاره گر موقت در حال اشاره است
1643
01:05:19,119 –> 01:05:22,240
با گره ای که می خواهیم حذف کنیم
1644
01:05:22,240 –> 01:05:26,079
درست است اگر کارمند مورد نقطه
1645
01:05:26,079 –> 01:05:28,559
ما می دانیم که اگر بخواهیم آن را واکشی کنیم
1646
01:05:28,559 –> 01:05:29,599
داده ها
1647
01:05:29,599 –> 01:05:33,039
باید از متغیر آیتم استفاده کنیم
1648
01:05:33,039 –> 01:05:36,240
و سپس آن را با هم مقایسه می کنیم که هست
1649
01:05:36,240 –> 01:05:38,880
با استفاده از علامت مساوی دو برابر، بنابراین اگر
1650
01:05:38,880 –> 01:05:41,039
ارزش 10
1651
01:05:41,039 –> 01:05:43,920
برابر است با موردی که ما
1652
01:05:43,920 –> 01:05:46,480
می خواهید حذف کنید، بنابراین فرض کنید این همان است
1653
01:05:46,480 –> 01:05:47,839
گره d
1654
01:05:47,839 –> 01:05:51,520
که همان گره ای است که باید آن را حذف کنیم
1655
01:05:51,520 –> 01:05:52,720
درست است
1656
01:05:52,720 –> 01:05:56,400
اگر این مقدار برابر با گره d باشد
1657
01:05:56,400 –> 01:05:59,119
که در مورد ما 5 است
1658
01:05:59,119 –> 01:06:00,559
بنابراین ما خواهیم کرد
1659
01:06:00,559 –> 01:06:03,599
از این حلقه برگرد
1660
01:06:03,599 –> 01:06:04,559
درست
1661
01:06:04,559 –> 01:06:06,319
نوشته نشده است ما از این خارج خواهیم شد
1662
01:06:06,319 –> 01:06:08,079
حلقه
1663
01:06:08,079 –> 01:06:10,000
اگر بنویسیم return برمی گردد
1664
01:06:10,000 –> 01:06:12,000
خارج از تابع خود درست ما انجام می دهیم
1665
01:06:12,000 –> 01:06:13,839
نمی خواهید از عملکرد خارج شوید
1666
01:06:13,839 –> 01:06:15,119
ما می خواهیم که
1667
01:06:15,119 –> 01:06:17,119
شکستن این حلقه در حالی که چه خواهد شد
1668
01:06:17,119 –> 01:06:18,960
اتفاق خواهد افتاد نشانگر موقت است
1669
01:06:18,960 –> 01:06:20,720
به روز رسانی ادامه دهید
1670
01:06:20,720 –> 01:06:24,400
اما هر گاه به این مقام برسد
1671
01:06:24,400 –> 01:06:28,000
اکنون می توانید در این موقعیت ببینید
1672
01:06:28,000 –> 01:06:30,559
ارزشی که موقتی است
1673
01:06:30,559 –> 01:06:32,799
اشاره گر موقت یا مرجع
1674
01:06:32,799 –> 01:06:35,280
نقطه اشاره پنج است و گره d است
1675
01:06:35,280 –> 01:06:36,640
همچنین پنج
1676
01:06:36,640 –> 01:06:38,960
بنابراین در آن موقعیت ما از آن خارج خواهیم شد
1677
01:06:38,960 –> 01:06:42,000
این حلقه while
1678
01:06:42,000 –> 01:06:44,480
اکنون می توانید ببینید که ما آن را داریم
1679
01:06:44,480 –> 01:06:47,200
موقعیت در اینجا که 5 است در حال حاضر ما می خواهیم
1680
01:06:47,200 –> 01:06:49,119
این عنصر را حذف کنید تا ببینیم چیست
1681
01:06:49,119 –> 01:06:52,240
استراتژی حذف این عنصر
1682
01:06:52,240 –> 01:06:54,160
برای حذف این عنصر فقط نیاز داریم
1683
01:06:54,160 –> 01:06:56,640
این مرجع را که در راه است به روز کنید
1684
01:06:56,640 –> 01:06:58,880
از سمت راست گره قبلی
1685
01:06:58,880 –> 01:07:01,039
بنابراین بیایید بگوییم که می خواهیم پنج تا را حذف کنیم
1686
01:07:01,039 –> 01:07:04,640
این مرجع که سه است
1687
01:07:04,640 –> 01:07:06,559
ما باید آن را به روز کنیم
1688
01:07:06,559 –> 01:07:09,039
بنابراین من می خواهم از یک نشانگر قرمز استفاده کنم
1689
01:07:09,039 –> 01:07:11,119
می خواهیم این مرجع را حذف کنیم و ما
1690
01:07:11,119 –> 01:07:13,200
باید این مرجع را به روز کند
1691
01:07:13,200 –> 01:07:14,960
اشاره به
1692
01:07:14,960 –> 01:07:17,760
گره بعدی که اینجاست
1693
01:07:17,760 –> 01:07:21,119
درست است، بنابراین ما این خاص را به روز خواهیم کرد
1694
01:07:21,119 –> 01:07:23,520
مرجع و ما آن را به نقطه به روز خواهیم کرد
1695
01:07:23,520 –> 01:07:24,640
مثل این
1696
01:07:24,640 –> 01:07:26,799
چه اتفاقی خواهد افتاد این است که پس از انجام
1697
01:07:26,799 –> 01:07:29,440
در این صورت یک لیست پیوندی دریافت خواهیم کرد
1698
01:07:29,440 –> 01:07:32,000
که از یک خواهد رفت
1699
01:07:32,000 –> 01:07:35,039
بعد سه بعد از سه می رویم
1700
01:07:35,039 –> 01:07:37,440
به هشت و نه راست پس حاصل
1701
01:07:37,440 –> 01:07:39,599
یک سه خواهد بود
1702
01:07:39,599 –> 01:07:40,880
هشت و
1703
01:07:40,880 –> 01:07:43,200
نه بنابراین به این ترتیب می توانید ما را ببینید
1704
01:07:43,200 –> 01:07:45,359
را حذف کرده اند
1705
01:07:45,359 –> 01:07:46,640
گره پنج
1706
01:07:46,640 –> 01:07:49,200
در حال حاضر به منظور به روز رسانی این مرجع ما
1707
01:07:49,200 –> 01:07:51,359
بدانیم که نمی توانیم از موقت استفاده کنیم
1708
01:07:51,359 –> 01:07:52,799
اشاره گر به دلیل
1709
01:07:52,799 –> 01:07:55,119
اوه ما نمی توانیم به قبلی دسترسی پیدا کنیم
1710
01:07:55,119 –> 01:07:56,480
مرجع
1711
01:07:56,480 –> 01:07:59,039
از این با استفاده از این اشاره گر موقت ما
1712
01:07:59,039 –> 01:08:02,079
فقط می تواند به سمت راست مرجع بعدی دسترسی داشته باشد
1713
01:08:02,079 –> 01:08:05,680
بنابراین ما باید از یک استراتژی استفاده کنیم
1714
01:08:05,680 –> 01:08:08,240
یک استراتژی بسیار مهم
1715
01:08:08,240 –> 01:08:11,039
تا بتوانیم این کار را موقتاً متوقف کنیم
1716
01:08:11,039 –> 01:08:12,400
اشاره گر
1717
01:08:12,400 –> 01:08:15,119
در گره قبلی از
1718
01:08:15,119 –> 01:08:17,520
گره ای که می خواهیم حذف کنیم
1719
01:08:17,520 –> 01:08:21,198
درست است، بنابراین اگر من می خواهم گره d را حذف کنم
1720
01:08:21,198 –> 01:08:24,319
من قرار نیست حلقه while را متوقف کنم
1721
01:08:24,319 –> 01:08:26,158
خود گره d
1722
01:08:26,158 –> 01:08:28,560
من آن را در گره قبلی متوقف خواهم کرد
1723
01:08:28,560 –> 01:08:29,439
درست
1724
01:08:29,439 –> 01:08:31,439
پس بیایید ببینیم چگونه می توانم این کار را انجام دهم
1725
01:08:31,439 –> 01:08:34,960
فقط این شرایط را به روز کنید
1726
01:08:34,960 –> 01:08:36,799
درست است پس این شرط نیست
1727
01:08:36,799 –> 01:08:39,279
ما می خواهیم زیرا می خواهیم به روز رسانی کنیم
1728
01:08:39,279 –> 01:08:41,600
مرجع گره قبلی بنابراین ما
1729
01:08:41,600 –> 01:08:43,198
نمی تواند از این استفاده کند
1730
01:08:43,198 –> 01:08:45,679
شرطی که خواهیم نوشت این را بازنویسی کنیم
1731
01:08:45,679 –> 01:08:48,640
شرطی که انگار
1732
01:08:48,640 –> 01:08:49,679
دما
1733
01:08:49,679 –> 01:08:51,439
نقطه
1734
01:08:51,439 –> 01:08:52,319
پاسخ
1735
01:08:52,319 –> 01:08:55,199
مورد نقطه
1736
01:08:56,158 –> 01:08:58,960
برابر است با
1737
01:08:58,960 –> 01:09:01,279
گره ای که می خواهیم حذف کنیم که هست
1738
01:09:01,279 –> 01:09:03,279
گره e
1739
01:09:03,279 –> 01:09:05,759
آن وقت فقط ما می شکنیم
1740
01:09:05,759 –> 01:09:08,158
حالا بیایید ببینیم وقتی ما هستیم چه اتفاقی می افتد
1741
01:09:08,158 –> 01:09:10,799
شرط را اینگونه بنویسید
1742
01:09:10,799 –> 01:09:14,158
temp dot rest به معنای گره بعدی سمت راست است
1743
01:09:14,158 –> 01:09:15,520
بنابراین
1744
01:09:15,520 –> 01:09:19,120
در ابتدا لیست پیوندی ما 1 بود
1745
01:09:19,120 –> 01:09:20,399
3
1746
01:09:20,399 –> 01:09:23,439
5 8 و 9
1747
01:09:23,439 –> 01:09:27,039
گره موقت ما اینجا بود
1748
01:09:27,600 –> 01:09:29,359
اکنون آنچه ما انجام خواهیم داد به جای آن است
1749
01:09:29,359 –> 01:09:32,000
با مقایسه این مقدار 1 می خواهیم
1750
01:09:32,000 –> 01:09:35,198
مقایسه نقطه دمایی ref
1751
01:09:35,198 –> 01:09:37,920
بنابراین مرجع بعدی خواهد بود
1752
01:09:37,920 –> 01:09:40,880
تا گره بعدی باشد که 3 است
1753
01:09:40,880 –> 01:09:42,880
مورد نقطه به این معنی است که ما می خواهیم آن را بررسی کنیم
1754
01:09:42,880 –> 01:09:45,759
ارزش درست است، بنابراین اگر موقت است
1755
01:09:45,759 –> 01:09:47,759
مرجع اشاره می کند
1756
01:09:47,759 –> 01:09:49,600
یکی که ما در واقع می خواهیم آن را بررسی کنیم
1757
01:09:49,600 –> 01:09:52,799
مقدار گره بعدی که سه است
1758
01:09:52,799 –> 01:09:54,719
این است
1759
01:09:54,719 –> 01:09:56,960
این معنای اصلی این خط است
1760
01:09:56,960 –> 01:09:59,280
که می توانید اینجا ببینید
1761
01:09:59,280 –> 01:10:00,800
و ما قصد داریم آن را با آن مقایسه کنیم
1762
01:10:00,800 –> 01:10:02,560
d یادداشت کنید تا بتوانید ببینید
1763
01:10:02,560 –> 01:10:05,840
این مقدار 3 برابر نیست با
1764
01:10:05,840 –> 01:10:08,560
5 در حال حاضر ما می خواهیم به روز رسانی
1765
01:10:08,560 –> 01:10:10,159
گره موقت
1766
01:10:10,159 –> 01:10:13,520
همانطور که دما برابر است با نقطه دما ref
1767
01:10:13,520 –> 01:10:15,440
بنابراین اکنون ارزش موقت دریافت خواهد شد
1768
01:10:15,440 –> 01:10:18,080
به روز شده و اکنون مقدار دما خواهد آمد
1769
01:10:18,080 –> 01:10:20,159
اینجا
1770
01:10:20,159 –> 01:10:22,640
حالا دوباره این شرایط خواهد بود
1771
01:10:22,640 –> 01:10:23,920
اوه
1772
01:10:23,920 –> 01:10:25,840
حالا این شرایط را ببینیم
1773
01:10:25,840 –> 01:10:28,880
temp dot def dot آیتم که به معنی
1774
01:10:28,880 –> 01:10:31,840
مورد گره بعدی سمت راست
1775
01:10:31,840 –> 01:10:34,400
که 5 است اکنون می خواهیم مقایسه کنیم
1776
01:10:34,400 –> 01:10:35,280
آن را با
1777
01:10:35,280 –> 01:10:37,679
گره d از آنجایی که با ما برابر است
1778
01:10:37,679 –> 01:10:39,840
قرار است از این حلقه خارج شود
1779
01:10:39,840 –> 01:10:41,760
بنابراین اکنون می توانید آن را ببینید
1780
01:10:41,760 –> 01:10:44,239
گره موقت ما
1781
01:10:44,239 –> 01:10:47,199
یا می توان گفت مرجع موقت ما است
1782
01:10:47,199 –> 01:10:49,280
اکنون در واقع به قبلی اشاره می کند
1783
01:10:49,280 –> 01:10:50,800
گره
1784
01:10:50,800 –> 01:10:53,440
زیرا شرط if را تغییر داده ایم
1785
01:10:53,440 –> 01:10:55,679
به این ترتیب درست است
1786
01:10:55,679 –> 01:10:57,679
قدم بسیار مهم
1787
01:10:57,679 –> 01:11:00,159
بنابراین اکنون کاری که می خواهیم انجام دهیم این است که ما هستیم
1788
01:11:00,159 –> 01:11:02,159
بدانید که ما باید این را به روز کنیم
1789
01:11:02,159 –> 01:11:03,600
خاص
1790
01:11:03,600 –> 01:11:05,600
مرجع که این یکی است
1791
01:11:05,600 –> 01:11:07,760
ما باید آن را به روز کنیم تا بتوانیم
1792
01:11:07,760 –> 01:11:09,760
به سادگی انجام دهیم این است که ما می توانیم
1793
01:11:09,760 –> 01:11:11,440
ببینید که نشانگر موقت است
1794
01:11:11,440 –> 01:11:14,159
به اینجا اشاره می کنیم تا بتوانیم به سادگی بنویسیم
1795
01:11:14,159 –> 01:11:17,280
که بعدی از این
1796
01:11:17,280 –> 01:11:20,640
یا مرجع این گره
1797
01:11:20,640 –> 01:11:23,840
برابر خواهد بود
1798
01:11:24,000 –> 01:11:26,480
برابر با نقطه دما است
1799
01:11:26,480 –> 01:11:28,080
مرجع
1800
01:11:28,080 –> 01:11:30,000
نقطه اشاره
1801
01:11:30,000 –> 01:11:32,320
درست است پس نقطه رف نقطه موقت چیست
1802
01:11:32,320 –> 01:11:34,000
رف یعنی
1803
01:11:34,000 –> 01:11:36,480
نقطه نقطه موقت به اینجا اشاره می کند
1804
01:11:36,480 –> 01:11:38,640
بنابراین ما در واقع این را به روز می کنیم
1805
01:11:38,640 –> 01:11:40,640
مرجع خاص بنابراین
1806
01:11:40,640 –> 01:11:42,800
ما آن را به روز می کنیم
1807
01:11:42,800 –> 01:11:45,280
temp dot ref dot ref یعنی ما هستیم
1808
01:11:45,280 –> 01:11:48,000
در واقع آن را اختصاص می دهد
1809
01:11:48,000 –> 01:11:51,600
به سمت راست بعدی و بعدی
1810
01:11:51,600 –> 01:11:54,239
بعدی ref.s نقطه بعدی به معنای
1811
01:11:54,239 –> 01:11:56,719
مرجع مرجع
1812
01:11:56,719 –> 01:11:59,600
بنابراین اگر شما آن را به عنوان خوانده شده به عنوان نقطه ref
1813
01:11:59,600 –> 01:12:00,800
این
1814
01:12:00,800 –> 01:12:03,520
در واقع 5 است
1815
01:12:03,520 –> 01:12:07,840
و نقطه ref یعنی 8 درست
1816
01:12:07,840 –> 01:12:10,560
ref به معنای عنصر بعدی است
1817
01:12:10,560 –> 01:12:12,960
پس اگر این 5 باشد
1818
01:12:12,960 –> 01:12:13,920
5
1819
01:12:13,920 –> 01:12:16,960
به 8 ارجاع می دهد پس ما داریم انجام می دهیم
1820
01:12:16,960 –> 01:12:18,400
قرار است انجام شود
1821
01:12:18,400 –> 01:12:20,840
دمای نقطه ref چیست
1822
01:12:20,840 –> 01:12:24,000
3 و این یعنی
1823
01:12:24,000 –> 01:12:26,400
و اینجا هم دما
1824
01:12:26,400 –> 01:12:28,400
ما میخواهیم نقطه دمایی را دوباره اختصاص دهیم
1825
01:12:28,400 –> 01:12:29,280
مرجع
1826
01:12:29,280 –> 01:12:30,000
به
1827
01:12:30,000 –> 01:12:31,040
8
1828
01:12:31,040 –> 01:12:32,000
درست
1829
01:12:32,000 –> 01:12:35,600
بنابراین به این ترتیب ما واقعا می توانیم به روز رسانی کنیم
1830
01:12:35,600 –> 01:12:38,800
و گره را به سمت راست و ما قبلاً حذف کنید
1831
01:12:38,800 –> 01:12:39,840
بدان که
1832
01:12:39,840 –> 01:12:43,440
پایتون با استفاده از زباله جمع آوری خواهد شد
1833
01:12:43,440 –> 01:12:46,320
این پنج گره را حذف کنید زیرا هیچ گره ای ندارد
1834
01:12:46,320 –> 01:12:49,600
ارجاعات داخل حافظه
1835
01:12:49,600 –> 01:12:52,480
بنابراین حاصل آن خواهد بود
1836
01:12:52,480 –> 01:12:56,000
لینگ لیست یک سه هشت و نه
1837
01:12:56,000 –> 01:12:57,760
پس بیایید برنامه ای را که دارم ببینیم
1838
01:12:57,760 –> 01:13:00,400
در اینجا ایجاد شده است
1839
01:13:00,400 –> 01:13:03,520
می توانید ببینید که من دارم
1840
01:13:03,520 –> 01:13:06,239
در این خط
1841
01:13:08,640 –> 01:13:10,800
من تابع حذف را با a فراخوانی می کنم
1842
01:13:10,800 –> 01:13:13,440
ارزش 5 اکنون بیایید نگاهی به آن بیندازیم
1843
01:13:13,440 –> 01:13:16,840
خود تابع را که هست حذف کنید
1844
01:13:16,840 –> 01:13:19,920
در اینجا درست است بنابراین ابتدا یک را ایجاد کرده ایم
1845
01:13:19,920 –> 01:13:22,000
مرجع موقت
1846
01:13:22,000 –> 01:13:24,320
و
1847
01:13:24,320 –> 01:13:26,960
فقط این شرط را در اینجا نادیده بگیرید
1848
01:13:26,960 –> 01:13:28,239
از اینجا جدا شوید زیرا ما قصد داریم
1849
01:13:28,239 –> 01:13:30,560
بحث در مورد این بخش نیز بسیار است
1850
01:13:30,560 –> 01:13:33,040
قدم مهمی که آخرین گام ما خواهد بود
1851
01:13:33,040 –> 01:13:35,920
مرحله حذف عنصر
1852
01:13:35,920 –> 01:13:38,080
زیرا ما در واقع یک مورد را گم کرده ایم
1853
01:13:38,080 –> 01:13:40,719
که در این شرایط به آن می پردازیم
1854
01:13:40,719 –> 01:13:42,719
حالا روی این تمرکز کن
1855
01:13:42,719 –> 01:13:44,480
قسمت اینجا
1856
01:13:44,480 –> 01:13:46,480
که در مورد آن بحث کرده ایم
1857
01:13:46,480 –> 01:13:49,199
می توانید اینجا را ببینید در حالی که دما هیچ کدام نیست
1858
01:13:49,199 –> 01:13:50,960
درست است ما در حال اجرا هستیم
1859
01:13:50,960 –> 01:13:53,360
اشاره گر موقت تا هیچ
1860
01:13:53,360 –> 01:13:55,920
و اگر نقطه دما در اینجا شرطی داریم
1861
01:13:55,920 –> 01:13:58,800
آیتم rev dot برابر با d گره است
1862
01:13:58,800 –> 01:14:01,280
ما می خواهیم از حلقه خارج شویم
1863
01:14:01,280 –> 01:14:03,679
همانطور که ما فقط می خواهیم مقدار را به روز کنیم
1864
01:14:03,679 –> 01:14:05,120
موقت
1865
01:14:05,120 –> 01:14:06,320
مرجع
1866
01:14:06,320 –> 01:14:08,719
به طوری که به گره اشاره خواهد کرد
1867
01:14:08,719 –> 01:14:10,719
قبل از گره ای که می خواهیم
1868
01:14:10,719 –> 01:14:12,239
حذف
1869
01:14:12,239 –> 01:14:15,520
اکنون ما مراجع را به روز خواهیم کرد
1870
01:14:15,520 –> 01:14:16,960
درست
1871
01:14:16,960 –> 01:14:18,800
به منظور به روز رسانی مرجع ما
1872
01:14:18,800 –> 01:14:21,840
ابتدا باید ببینید که نقطه دمایی ref
1873
01:14:21,840 –> 01:14:23,840
پوچ نیست
1874
01:14:23,840 –> 01:14:26,560
if temp dot ref که بعدی است
1875
01:14:26,560 –> 01:14:29,199
مورد داخل این
1876
01:14:29,199 –> 01:14:31,440
temp dot ref به معنای عنصر بعدی است
1877
01:14:31,440 –> 01:14:33,920
اشاره گر موقت اگر تهی باشد
1878
01:14:33,920 –> 01:14:36,320
به این معنی است که ما عنصر را پیدا نکرده ایم
1879
01:14:36,320 –> 01:14:38,480
که آشکار است و
1880
01:14:38,480 –> 01:14:40,640
other other به این معنی است که ما آن را پیدا کرده ایم
1881
01:14:40,640 –> 01:14:44,560
عنصر و ما قصد داریم این را به روز کنیم
1882
01:14:44,560 –> 01:14:47,840
Temp dot ref برابر است با temp dot ref dot
1883
01:14:47,840 –> 01:14:50,320
ref که در اصل همان است
1884
01:14:50,320 –> 01:14:52,560
این شرایطی که داریم
1885
01:14:52,560 –> 01:14:54,320
درست مطالعه شده است، بنابراین باید بسازیم
1886
01:14:54,320 –> 01:14:56,880
این به روز رسانی و من قبلاً گفته ام
1887
01:14:56,880 –> 01:15:00,480
شما چگونه این به روز رسانی کار می کند
1888
01:15:00,480 –> 01:15:02,800
حالا بیایید نگاهی به یک خیلی بیاندازیم
1889
01:15:02,800 –> 01:15:04,400
گام مهم
1890
01:15:04,400 –> 01:15:05,199
اکنون
1891
01:15:05,199 –> 01:15:08,960
در اینجا می توانید حذف 5 را بعد از این ببینید
1892
01:15:08,960 –> 01:15:10,880
من یکی را درج کرده ام
1893
01:15:10,880 –> 01:15:13,199
سه چهار و پنج در لیست پیوند
1894
01:15:13,199 –> 01:15:14,400
در ابتدا
1895
01:15:14,400 –> 01:15:16,159
و حالا بعد از تماس می توانید ببینید
1896
01:15:16,159 –> 01:15:19,120
حذف تابع در پنج حذف شده است
1897
01:15:19,120 –> 01:15:21,199
پنج از لیست پیوند
1898
01:15:21,199 –> 01:15:24,640
حالا اگر به جای آن چهار در مورد بنویسم
1899
01:15:24,640 –> 01:15:26,239
از 5
1900
01:15:26,239 –> 01:15:28,800
و اگر دوباره اجراش کنم
1901
01:15:28,800 –> 01:15:30,480
میتوانی ببینی
1902
01:15:30,480 –> 01:15:35,760
1 3 5 درست است یعنی 4 حذف شده است
1903
01:15:35,760 –> 01:15:39,920
اگر 3 را بنویسم دوباره کار می کند
1904
01:15:39,920 –> 01:15:41,520
میتوانی ببینی
1905
01:15:41,520 –> 01:15:45,120
اکنون 1 4 5 3 حذف شده است
1906
01:15:45,120 –> 01:15:48,000
در حال حاضر مورد بسیار مهم در اینجا اگر من می خواهم
1907
01:15:48,000 –> 01:15:49,280
بنویس 1
1908
01:15:49,280 –> 01:15:52,239
این کار نمی کند
1909
01:15:52,239 –> 01:15:53,520
درست
1910
01:15:53,520 –> 01:15:54,719
میتوانی ببینی
1911
01:15:54,719 –> 01:15:58,320
3 4 5 به همین دلیل کار می کند
1912
01:15:58,320 –> 01:16:00,320
شرایط کامل اینجا که من نوشته ام
1913
01:16:00,320 –> 01:16:04,159
اگر این شرط را ننویسم
1914
01:16:04,159 –> 01:16:06,320
درست است اجازه دهید من فقط این را حذف کنم
1915
01:16:06,320 –> 01:16:09,040
شرایط اینجا
1916
01:16:09,040 –> 01:16:12,159
چون هنوز مطالعه نکرده ایم
1917
01:16:12,159 –> 01:16:15,199
اکنون می توانید آن را بعد از این ببینید
1918
01:16:15,199 –> 01:16:17,679
شما نمی توانید عنصر یک را حذف کنید
1919
01:16:17,679 –> 01:16:20,239
اگر بنویسید حذف سه خواهد شد
1920
01:16:20,239 –> 01:16:21,360
کار کردن
1921
01:16:21,360 –> 01:16:23,600
می توانید ببینید که یک سه چهار کار می کند
1922
01:16:23,600 –> 01:16:25,280
پنج
1923
01:16:25,280 –> 01:16:27,520
و یک چهار پنج که به معنی سه است
1924
01:16:27,520 –> 01:16:29,920
حذف چهار نیز حذف پنج خواهد شد
1925
01:16:29,920 –> 01:16:32,080
نیز حذف خواهد شد اما
1926
01:16:32,080 –> 01:16:35,040
یکی حذف نمی شود آن را نشان می دهد
1927
01:16:35,040 –> 01:16:38,080
خطایی که می گوید هیچ شیء تایپ نمی شود
1928
01:16:38,080 –> 01:16:39,760
هیچ موردی ندارد
1929
01:16:39,760 –> 01:16:42,480
صفت درست است، پس بیایید ببینیم این چیست
1930
01:16:42,480 –> 01:16:45,040
این چه اهمیتی دارد
1931
01:16:45,040 –> 01:16:47,440
شرطی که اینجا نوشته ام
1932
01:16:47,440 –> 01:16:50,400
که این یکی است
1933
01:16:52,880 –> 01:16:55,280
اکنون می توانید ببینید
1934
01:16:55,280 –> 01:16:56,480
در این
1935
01:16:56,480 –> 01:16:58,080
مورد
1936
01:16:58,080 –> 01:17:00,320
از آنجایی که ما در واقع در حال مقایسه هستیم
1937
01:17:00,320 –> 01:17:04,000
مقدار دمای نقطه ref که بعدی است
1938
01:17:04,000 –> 01:17:05,120
عنصر
1939
01:17:05,120 –> 01:17:08,000
مورد نقطهای که ما واقعاً از دست میدهیم
1940
01:17:08,000 –> 01:17:09,600
اولین گره
1941
01:17:09,600 –> 01:17:11,679
درست است زیرا مقایسه ما همیشه خواهد بود
1942
01:17:11,679 –> 01:17:13,679
از عنصر بعدی شروع کنید که به این معنی است
1943
01:17:13,679 –> 01:17:16,159
اولین گره را از دست خواهیم داد
1944
01:17:16,159 –> 01:17:17,840
در لیست پیوندی ما
1945
01:17:17,840 –> 01:17:20,239
بنابراین اگر بخواهیم اولین گره را حذف کنیم
1946
01:17:20,239 –> 01:17:22,800
در لیست پیوندی ما
1947
01:17:22,800 –> 01:17:24,880
تمام این قسمتی که ما انجامش دادیم همین است
1948
01:17:24,880 –> 01:17:26,400
سر کار نمی رود
1949
01:17:26,400 –> 01:17:27,840
چرا
1950
01:17:27,840 –> 01:17:30,080
اجازه دهید دوباره لیست پیوند شده را بازنویسی کنم
1951
01:17:30,080 –> 01:17:33,199
در اینجا فرض کنید یک لیست پیوندی داریم 1 3
1952
01:17:33,199 –> 01:17:34,960
و 8
1953
01:17:34,960 –> 01:17:38,320
9 و حالا فرض کنید می خواهم حذف کنم
1954
01:17:38,320 –> 01:17:40,560
یکی از این لیست پیوند
1955
01:17:40,560 –> 01:17:42,640
با همان رویکردی که ما انجام داده ایم
1956
01:17:42,640 –> 01:17:45,640
قبل از
1957
01:17:46,159 –> 01:17:49,199
ما می دانیم که دما در اینجا نشان می دهد
1958
01:17:49,199 –> 01:17:52,239
حالا شما می توانید ببینید که در این اگر این اگر
1959
01:17:52,239 –> 01:17:54,480
شرایط شما می توانید نقطه دمای f dot را ببینید
1960
01:17:54,480 –> 01:17:55,520
مورد
1961
01:17:55,520 –> 01:17:57,679
یعنی قراره مقایسه کنیم
1962
01:17:57,679 –> 01:18:00,000
مقدار بعدی که 3 است
1963
01:18:00,000 –> 01:18:02,640
اما گره ای که می خواهیم حذف کنیم 1 است
1964
01:18:02,640 –> 01:18:04,159
درست است
1965
01:18:04,159 –> 01:18:05,920
این شرایط در اینجا که ما داریم
1966
01:18:05,920 –> 01:18:08,239
نوشته شده همیشه اولین مورد را از دست خواهد داد
1967
01:18:08,239 –> 01:18:09,280
گره
1968
01:18:09,280 –> 01:18:11,600
همیشه از این بعدی شروع خواهد شد
1969
01:18:11,600 –> 01:18:12,800
گره ها
1970
01:18:12,800 –> 01:18:15,199
اما همیشه این گره را از دست خواهد داد
1971
01:18:15,199 –> 01:18:17,600
و آنچه اتفاق خواهد افتاد از زمان بعدی است
1972
01:18:17,600 –> 01:18:20,480
گره که عبارت است از نقطه ساقه ref dot
1973
01:18:20,480 –> 01:18:23,440
برابر d گره موقت نیست
1974
01:18:23,440 –> 01:18:25,360
اشاره گر به اینجا اشاره خواهد کرد
1975
01:18:25,360 –> 01:18:27,920
و این ادامه خواهد داشت و ادامه خواهد داشت
1976
01:18:27,920 –> 01:18:30,159
و زمانی که اشاره گر موقت خواهد شد
1977
01:18:30,159 –> 01:18:31,920
رسیدن به اینجا
1978
01:18:31,920 –> 01:18:33,520
در این نقطه
1979
01:18:33,520 –> 01:18:34,800
و خواهد شد
1980
01:18:34,800 –> 01:18:37,840
سعی کنید برای دسترسی به temp dot ref dot آیتم شما
1981
01:18:37,840 –> 01:18:40,000
می توانم ببینم هیچ موردی در اینجا وجود ندارد پس همین است
1982
01:18:40,000 –> 01:18:42,560
چرا این را نشان می دهد
1983
01:18:42,560 –> 01:18:44,480
خطای صفت که هست
1984
01:18:44,480 –> 01:18:45,760
هیچ نوع
1985
01:18:45,760 –> 01:18:48,480
می توانید اینجا را ببینید
1986
01:18:48,480 –> 01:18:50,880
می گویند که هیچ نوع شیء ندارد
1987
01:18:50,880 –> 01:18:52,480
هیچ ویژگی
1988
01:18:52,480 –> 01:18:55,120
که دلیل اصلی این امر است
1989
01:18:55,120 –> 01:18:57,679
شرطی که اینجا نوشته ایم
1990
01:18:57,679 –> 01:19:00,159
که به طور خودکار از
1991
01:19:00,159 –> 01:19:02,640
مقایسه عنصر اول با ما
1992
01:19:02,640 –> 01:19:03,760
گره d
1993
01:19:03,760 –> 01:19:06,239
درست است، بنابراین ما باید یک بسیار بنویسیم
1994
01:19:06,239 –> 01:19:11,440
شرط اساسی که این یکی است
1995
01:19:11,600 –> 01:19:14,159
در حال حاضر این شرایط مراقبت از
1996
01:19:14,159 –> 01:19:16,719
اولین مورد که سر است
1997
01:19:16,719 –> 01:19:18,719
بنابراین آنچه این شرایط انجام می دهد این است
1998
01:19:18,719 –> 01:19:21,600
خود نقطه سر مورد نقطه نقطه برابر است با مساوی
1999
01:19:21,600 –> 01:19:24,560
به گره d که به این معنی است که اگر آیتم
2000
01:19:24,560 –> 01:19:27,199
اشاره گر سر
2001
01:19:27,199 –> 01:19:29,679
برابر گره d است
2002
01:19:29,679 –> 01:19:31,360
کاری که می خواهیم انجام دهیم این است که می رویم
2003
01:19:31,360 –> 01:19:33,520
برای انجام یک به روز رسانی
2004
01:19:33,520 –> 01:19:35,920
ما می خواهیم نشانگر سر را بسازیم
2005
01:19:35,920 –> 01:19:37,840
اشاره به
2006
01:19:37,840 –> 01:19:40,800
خود نقطه سر نقطه ref که به معنی
2007
01:19:40,800 –> 01:19:42,800
اشاره گر بعدی سر
2008
01:19:42,800 –> 01:19:44,800
که در واقع نت دوم درست است
2009
01:19:44,800 –> 01:19:47,920
بنابراین خود نقطه سر نقطه مرجع است
2010
01:19:47,920 –> 01:19:50,480
یادداشت دوم از لیست پیوندی ما بنابراین ما هستیم
2011
01:19:50,480 –> 01:19:52,400
در حال به روز رسانی نشانگر سر به
2012
01:19:52,400 –> 01:19:54,480
به عنصر دوم اشاره کنید
2013
01:19:54,480 –> 01:19:56,719
بنابراین اکنون می توانید اینجا را ببینید
2014
01:19:56,719 –> 01:19:59,520
سر در ابتدا به اینجا اشاره می کرد
2015
01:19:59,520 –> 01:20:01,440
ما ارزش سر را با
2016
01:20:01,440 –> 01:20:03,360
گره d اگر درست باشد آنچه ما هستیم
2017
01:20:03,360 –> 01:20:05,600
فقط قرار است انجام دهیم این است که ما می رویم
2018
01:20:05,600 –> 01:20:07,840
این سر نقطه خود را اختصاص دهید
2019
01:20:07,840 –> 01:20:10,560
به گره دوم با استفاده از
2020
01:20:10,560 –> 01:20:13,199
سر خود نقطه
2021
01:20:13,199 –> 01:20:16,239
نقطه اشاره
2022
01:20:16,400 –> 01:20:17,360
درست
2023
01:20:17,360 –> 01:20:20,239
به این ترتیب می توانید این عنصر را ببینید
2024
01:20:20,239 –> 01:20:23,360
1 نادیده گرفته می شود، بنابراین لیست پیوندی ما خواهد بود
2025
01:20:23,360 –> 01:20:26,320
از 3 از سر گره 3 8 شروع می شود
2026
01:20:26,320 –> 01:20:29,760
9 بنابراین حاصل در ما 3 8 9 خواهد بود
2027
01:20:29,760 –> 01:20:31,040
لیست پیوندی
2028
01:20:31,040 –> 01:20:33,520
بنابراین به همین دلیل حذف کمی است
2029
01:20:33,520 –> 01:20:35,360
حقیرتر
2030
01:20:35,360 –> 01:20:37,679
اکنون می توانید ببینید که این کل کد است
2031
01:20:37,679 –> 01:20:39,120
که نوشته ایم
2032
01:20:39,120 –> 01:20:41,600
در لیست پیوند می توانید این کد را دریافت کنید
2033
01:20:41,600 –> 01:20:44,239
داخل اپلیکیشن اندروید
2034
01:20:44,239 –> 01:20:47,440
که من به صورت رایگان ایجاد کرده ام و
2035
01:20:47,440 –> 01:20:50,000
می توانید آن را دانلود کنید و همچنین می توانید
2036
01:20:50,000 –> 01:20:51,840
به یادداشت هایی که من دارم نگاه کنید
2037
01:20:51,840 –> 01:20:54,159
اینجا نوشته شده تا شما باشید
2038
01:20:54,159 –> 01:20:56,490
بتواند آن را بیشتر درک کند
2039
01:20:56,490 –> 01:20:58,960
[موسیقی]
2040
01:20:58,960 –> 01:21:00,880
در مورد صف ها بحث می کنیم
2041
01:21:00,880 –> 01:21:03,040
ساختار داده یکی از مهم ترین
2042
01:21:03,040 –> 01:21:05,360
ساختارهای داده ای و گسترده ای دارد
2043
01:21:05,360 –> 01:21:07,199
برنامه های متنوعی که ما هستیم
2044
01:21:07,199 –> 01:21:09,360
امروز قرار است بحث کنیم
2045
01:21:09,360 –> 01:21:11,120
پس اول از همه
2046
01:21:11,120 –> 01:21:13,360
اولین نکته مهم در مورد داده های qs
2047
01:21:13,360 –> 01:21:16,080
ساختار این است که از fifo پیروی می کند
2048
01:21:16,080 –> 01:21:17,120
قانون
2049
01:21:17,120 –> 01:21:20,880
و fifo به معنی اولین در
2050
01:21:20,880 –> 01:21:23,040
اول قانون خارج
2051
01:21:23,040 –> 01:21:25,040
درست بسیار ساده و بسیار ابتدایی
2052
01:21:25,040 –> 01:21:26,000
قانون
2053
01:21:26,000 –> 01:21:28,400
که این ساختار داده از آن پیروی می کند
2054
01:21:28,400 –> 01:21:30,480
و همانطور که همه ما می دانیم که ساختارهای داده
2055
01:21:30,480 –> 01:21:32,960
فقط داده هستند و ساختار آن است
2056
01:21:32,960 –> 01:21:35,520
تعریف شده با استفاده از برخی از قوانین بنابراین در صف ما
2057
01:21:35,520 –> 01:21:38,639
این قانون fifo را داشته باشید، بنابراین فقط می گوید
2058
01:21:38,639 –> 01:21:41,360
اولین عنصری که به داخل می رود
2059
01:21:41,360 –> 01:21:43,440
صف ها اولین می شوند
2060
01:21:43,440 –> 01:21:45,600
عنصر برای بیرون آمدن از صف
2061
01:21:45,600 –> 01:21:48,159
حالا بگذارید این قانون را برای شما توضیح دهم
2062
01:21:48,159 –> 01:21:52,080
با یک مثال بسیار ساده از یک uh
2063
01:21:52,080 –> 01:21:54,719
پیشخوان بلیط درست است، بنابراین بیایید بگوییم آنجا
2064
01:21:54,719 –> 01:21:56,080
هستند
2065
01:21:56,080 –> 01:21:58,560
سه نفر که می خواهند بلیط بخرند
2066
01:21:58,560 –> 01:22:00,400
آنها یک صف تشکیل خواهند داد
2067
01:22:00,400 –> 01:22:02,560
چیزی مثل این
2068
01:22:02,560 –> 01:22:03,760
درست
2069
01:22:03,760 –> 01:22:05,199
پس حالا بیایید بگوییم
2070
01:22:05,199 –> 01:22:06,320
اولین
2071
01:22:06,320 –> 01:22:08,320
شخصی که داخل این صف است
2072
01:22:08,320 –> 01:22:09,840
بلیت را می خواهد پس آن را می گیرد
2073
01:22:09,840 –> 01:22:10,800
بلیط
2074
01:22:10,800 –> 01:22:12,000
و
2075
01:22:12,000 –> 01:22:14,159
می توانید ببینید که صف از اینجا شروع می شود
2076
01:22:14,159 –> 01:22:17,040
درست است پس من می خواهم به این زنگ بزنم
2077
01:22:17,040 –> 01:22:19,120
به عنوان جلوی صف
2078
01:22:19,120 –> 01:22:21,360
و می توانید ببینید که صف در اینجا به پایان می رسد
2079
01:22:21,360 –> 01:22:23,280
بنابراین من می خواهم آن را به عنوان انتهای عقب صدا کنم
2080
01:22:23,280 –> 01:22:24,480
از صف
2081
01:22:24,480 –> 01:22:26,480
پس نفر اول
2082
01:22:26,480 –> 01:22:27,360
سازمان بهداشت جهانی
2083
01:22:27,360 –> 01:22:29,280
بلیط را گرفته و حالا می رود
2084
01:22:29,280 –> 01:22:31,840
برای بیرون آمدن از صف پس به این معنی است که
2085
01:22:31,840 –> 01:22:32,960
را
2086
01:22:32,960 –> 01:22:35,040
عملیات حذف در محل انجام می شود
2087
01:22:35,040 –> 01:22:36,560
قسمت جلویی
2088
01:22:36,560 –> 01:22:39,600
بنابراین در مورد q آن را dq می نامیم
2089
01:22:39,600 –> 01:22:42,800
عملیات نه یک عملیات حذف درست است
2090
01:22:42,800 –> 01:22:45,360
بنابراین dq می گیرد در جلوی
2091
01:22:45,360 –> 01:22:47,440
در حال حاضر صف بگذارید، فرض کنید می خواهیم
2092
01:22:47,440 –> 01:22:49,840
درج اوم شخص دیگری وجود دارد که
2093
01:22:49,840 –> 01:22:51,360
می خواهد به صف خرید بپیوندد
2094
01:22:51,360 –> 01:22:52,960
بلیط پس او خواهد شد
2095
01:22:52,960 –> 01:22:55,040
اوه او اجازه ندارد از آن بپیوندد
2096
01:22:55,040 –> 01:22:56,560
جلو یا
2097
01:22:56,560 –> 01:22:58,159
در بین مکعب زیرا که خواهد شد
2098
01:22:58,159 –> 01:22:59,840
اینطور تقلب کن
2099
01:22:59,840 –> 01:23:01,840
او فقط خواهد شد
2100
01:23:01,840 –> 01:23:03,760
او باید به پشت سر برود
2101
01:23:03,760 –> 01:23:05,920
صف و حالا من می خواهم به روز رسانی
2102
01:23:05,920 –> 01:23:07,920
نادر
2103
01:23:07,920 –> 01:23:09,920
به این آخرین نفر درست است پس این است
2104
01:23:09,920 –> 01:23:12,560
وضعیت صف به طور مشابه اگر ما
2105
01:23:12,560 –> 01:23:14,480
می خواهید برخی از عناصر را در داخل قرار دهید
2106
01:23:14,480 –> 01:23:15,440
صف
2107
01:23:15,440 –> 01:23:19,120
درج که عملیات nq است
2108
01:23:19,120 –> 01:23:21,040
درست
2109
01:23:21,040 –> 01:23:23,679
در انتهای عقب و dq انجام می شود
2110
01:23:23,679 –> 01:23:26,320
عملیات در قسمت جلویی انجام می شود
2111
01:23:26,320 –> 01:23:28,400
در حال حاضر این دارای طیف گسترده ای از
2112
01:23:28,400 –> 01:23:30,560
برنامه هایی که من در مورد آنها بسیار بحث خواهم کرد
2113
01:23:30,560 –> 01:23:31,600
به سرعت
2114
01:23:31,600 –> 01:23:32,560
بنابراین
2115
01:23:32,560 –> 01:23:34,719
اول از همه این نوع سیستم است
2116
01:23:34,719 –> 01:23:38,159
همچنین به عنوان اولین نفر اول شناخته می شود
2117
01:23:38,159 –> 01:23:41,280
سرویس پایه که fcfs است
2118
01:23:41,280 –> 01:23:43,600
حق اول بیایید خدمت بنابراین
2119
01:23:43,600 –> 01:23:46,239
اول شخص یا اول
2120
01:23:46,239 –> 01:23:48,800
منبعی که داخل صف می آید
2121
01:23:48,800 –> 01:23:51,760
قرار است برای اولین بار در حال حاضر این
2122
01:23:51,760 –> 01:23:56,239
برنامه در زمان بندی cpu استفاده می شود
2123
01:23:56,239 –> 01:23:59,120
بنابراین اگر شما برنامه ریزی cpu را مطالعه کرده اید
2124
01:23:59,120 –> 01:24:01,360
شما باید اولین آمدن را مطالعه کرده باشید
2125
01:24:01,360 –> 01:24:04,159
پایه اول و با استفاده از آن اجرا می شود
2126
01:24:04,159 –> 01:24:06,159
یک ساختار داده نشانه
2127
01:24:06,159 –> 01:24:07,120
بنابراین
2128
01:24:07,120 –> 01:24:08,960
اولین عنصری که
2129
01:24:08,960 –> 01:24:10,880
می آید داخل صف قرار است به
2130
01:24:10,880 –> 01:24:13,120
اول سرویس بگیرید و به همین دلیل است
2131
01:24:13,120 –> 01:24:15,520
اول درست بیرون میاد
2132
01:24:15,520 –> 01:24:16,639
برخی هستند
2133
01:24:16,639 –> 01:24:18,400
برخی از برنامه های کاربردی دیگر نیز وجود دارد
2134
01:24:18,400 –> 01:24:19,679
مثلا
2135
01:24:19,679 –> 01:24:22,480
می توانیم از صف ها به عنوان استفاده کنیم
2136
01:24:22,480 –> 01:24:24,400
صف های اولویت دار
2137
01:24:24,400 –> 01:24:26,880
درست با تعیین اولویت به برخی
2138
01:24:26,880 –> 01:24:27,840
عملکرد
2139
01:24:27,840 –> 01:24:29,520
و ما در مورد اولویت بحث خواهیم کرد
2140
01:24:29,520 –> 01:24:31,840
صف ها به عنوان پشته نیز شناخته می شوند
2141
01:24:31,840 –> 01:24:33,679
ساختار داده در مورد آنها بحث خواهیم کرد
2142
01:24:33,679 –> 01:24:34,960
جزئیات
2143
01:24:34,960 –> 01:24:38,239
و سپس ما چند رشته ای داریم
2144
01:24:38,239 –> 01:24:39,520
برنامه نويسي
2145
01:24:39,520 –> 01:24:40,639
درست
2146
01:24:40,639 –> 01:24:43,600
اگر جاوا خوانده اید، ممکن است یا ج
2147
01:24:43,600 –> 01:24:44,880
تیز
2148
01:24:44,880 –> 01:24:46,800
شما باید چند رشته ای مطالعه کرده باشید
2149
01:24:46,800 –> 01:24:48,000
برنامه نويسي
2150
01:24:48,000 –> 01:24:49,199
در آن
2151
01:24:49,199 –> 01:24:51,840
اوه، زمان بندی موضوع یک مفهوم است
2152
01:24:51,840 –> 01:24:54,320
جایی که از صف ها درست استفاده می کنیم
2153
01:24:54,320 –> 01:24:55,199
بنابراین
2154
01:24:55,199 –> 01:24:56,800
اینها برخی از کاربردهای آن است
2155
01:24:56,800 –> 01:24:58,880
صف ها حالا بیایید به سرعت نگاهی بیندازیم
2156
01:24:58,880 –> 01:25:01,520
نحوه اجرای آن در
2157
01:25:01,520 –> 01:25:04,239
برنامه نویسی پایتون یا حتی در هر برنامه دیگری
2158
01:25:04,239 –> 01:25:06,080
زبان برنامه نویسی که ما داریم می رویم
2159
01:25:06,080 –> 01:25:06,960
به
2160
01:25:06,960 –> 01:25:10,080
ایده اصلی را درست بحث کنید و سپس
2161
01:25:10,080 –> 01:25:11,679
می توانید آن را در
2162
01:25:11,679 –> 01:25:14,000
هر زبانی را که می خواهید درست کنید
2163
01:25:14,000 –> 01:25:16,080
اولین قدم به سمت راست می رویم اجرا کنیم
2164
01:25:16,080 –> 01:25:18,239
برخی از مراحل برای آسان تر کردن آن برای شما
2165
01:25:18,239 –> 01:25:20,239
درک نحوه پیاده سازی داده ها
2166
01:25:20,239 –> 01:25:21,760
ساختار و
2167
01:25:21,760 –> 01:25:24,239
شما فقط لازم نیست
2168
01:25:24,239 –> 01:25:26,560
تمام مراحل را یکی یکی یاد بگیرید
2169
01:25:26,560 –> 01:25:28,880
آنها را خیلی سریع درک کنید
2170
01:25:28,880 –> 01:25:31,120
بنابراین اول از همه ما در اولین
2171
01:25:31,120 –> 01:25:33,280
مرحله ای که می خواهیم ایجاد کنیم
2172
01:25:33,280 –> 01:25:34,800
کلاس صف
2173
01:25:34,800 –> 01:25:35,679
درست
2174
01:25:35,679 –> 01:25:37,520
و سپس یک شی از ایجاد خواهیم کرد
2175
01:25:37,520 –> 01:25:38,880
این کلاس
2176
01:25:38,880 –> 01:25:42,239
که ما آن را به عنوان q کوچک می نامیم
2177
01:25:42,239 –> 01:25:43,280
و این
2178
01:25:43,280 –> 01:25:45,280
شیء کلاس قرار است حفظ شود
2179
01:25:45,280 –> 01:25:47,840
کل ساختار صف
2180
01:25:47,840 –> 01:25:48,639
درست
2181
01:25:48,639 –> 01:25:50,080
در ابتدا
2182
01:25:50,080 –> 01:25:52,560
من می خواهم در ابتدا در اینجا بنویسم وقتی
2183
01:25:52,560 –> 01:25:55,280
صف خالی است
2184
01:25:55,280 –> 01:25:58,560
درست ما دو اشاره گر ایجاد می کنیم
2185
01:25:58,560 –> 01:26:01,520
اولین اشاره گر نشانگر جلو است
2186
01:26:01,520 –> 01:26:03,760
و از آنجایی که ما نشانگر جلویی را می خواهیم
2187
01:26:03,760 –> 01:26:05,120
صف
2188
01:26:05,120 –> 01:26:07,840
اوه شی صف من قصد دارم خودم بنویسم
2189
01:26:07,840 –> 01:26:10,480
نقطه جلو
2190
01:26:10,960 –> 01:26:14,159
درست است یا ما خود نقطه نادر است
2191
01:26:14,159 –> 01:26:16,560
و در ابتدا به هر دو می روند
2192
01:26:16,560 –> 01:26:17,840
اشاره به
2193
01:26:17,840 –> 01:26:22,080
موقعیت تهی یا موقعیت هیچ
2194
01:26:22,080 –> 01:26:24,400
درست است زیرا در صف خالی است
2195
01:26:24,400 –> 01:26:25,760
در ابتدا
2196
01:26:25,760 –> 01:26:28,000
این دو به هیچ کدام اشاره می کنند
2197
01:26:28,000 –> 01:26:29,120
موقعیت
2198
01:26:29,120 –> 01:26:32,960
اکنون مرحله دوم ایجاد یک کلاس گره است
2199
01:26:32,960 –> 01:26:34,400
درست
2200
01:26:34,400 –> 01:26:37,040
ما اساساً یک کلاس گره ایجاد خواهیم کرد
2201
01:26:37,040 –> 01:26:38,719
از آنجایی که در ابتدا آنها پوچ هستند ما هستیم
2202
01:26:38,719 –> 01:26:41,440
میخواهیم سازندهای از این بسازم
2203
01:26:41,440 –> 01:26:43,840
کلاس queue که می توانیم با استفاده از آن انجام دهیم
2204
01:26:43,840 –> 01:26:45,120
init
2205
01:26:45,120 –> 01:26:48,080
که سازنده این کلاس است
2206
01:26:48,080 –> 01:26:49,920
درست ما یک سازنده و ایجاد خواهیم کرد
2207
01:26:49,920 –> 01:26:52,000
جلو و عقب را به صورت مقداردهی اولیه می کنیم
2208
01:26:52,000 –> 01:26:53,440
خالی
2209
01:26:53,440 –> 01:26:55,440
اکنون یک کلاس گره ایجاد می کنیم که
2210
01:26:55,440 –> 01:26:57,920
هر زمان که بخواهیم درست را حفظ می کنیم
2211
01:26:57,920 –> 01:27:00,560
ایجاد یا اضافه کردن یک عنصر در داخل
2212
01:27:00,560 –> 01:27:03,040
این صف را ایجاد می کنیم
2213
01:27:03,040 –> 01:27:05,600
شیء این کلاس گره بنابراین این گره
2214
01:27:05,600 –> 01:27:07,040
کلاس خواهد داشت
2215
01:27:07,040 –> 01:27:09,920
دو عضو که داده است
2216
01:27:09,920 –> 01:27:12,560
و اشاره گر بعدی
2217
01:27:12,560 –> 01:27:14,320
درست است بنابراین اساسا ما می خواهیم
2218
01:27:14,320 –> 01:27:16,080
پیاده سازی ساختار داده صف
2219
01:27:16,080 –> 01:27:17,520
استفاده كردن
2220
01:27:17,520 –> 01:27:19,760
لیست پیوندی
2221
01:27:19,760 –> 01:27:21,520
درست روش های مختلفی برای
2222
01:27:21,520 –> 01:27:23,600
می توانید از نشانه ها در پایتون استفاده کنید
2223
01:27:23,600 –> 01:27:26,000
مجموعه ها نیز اما ما هستیم
2224
01:27:26,000 –> 01:27:27,679
قرار نیست از آن استفاده کنند زیرا آنها هستند
2225
01:27:27,679 –> 01:27:30,320
چارچوب ها و کتابخانه های شخص ثالث
2226
01:27:30,320 –> 01:27:32,159
ما می خواهیم از لیست پیوندی استفاده کنیم که می توانید
2227
01:27:32,159 –> 01:27:35,280
حتی اگر از پشته ها استفاده می کنید
2228
01:27:35,280 –> 01:27:38,000
c plus plus یا java و اینجا هستیم
2229
01:27:38,000 –> 01:27:40,400
قرار است از لیست پیوندی در یک گره استفاده کنیم
2230
01:27:40,400 –> 01:27:42,639
کلاس ما داده ها را داریم و آن را داریم
2231
01:27:42,639 –> 01:27:44,800
اشاره گر بعدی در حال حاضر، بیایید ببینیم چگونه
2232
01:27:44,800 –> 01:27:47,120
برای انجام عملیات صف که است
2233
01:27:47,120 –> 01:27:50,960
قدم سوم ما خواهد بود
2234
01:27:51,040 –> 01:27:53,520
درست است ما همه اینها را در کد کد می کنیم
2235
01:27:53,520 –> 01:27:55,920
آموزش های آینده ما این را کد می کنیم
2236
01:27:55,920 –> 01:27:58,000
کل مفهوم من فقط یک ایده می دهم
2237
01:27:58,000 –> 01:27:59,120
در مورد چگونگی
2238
01:27:59,120 –> 01:28:01,360
شما می توانید آن را خودتان انجام دهید و
2239
01:28:01,360 –> 01:28:03,679
از آموزش بعدی به بعد ما
2240
01:28:03,679 –> 01:28:06,239
آنها را یک به یک درست به صورت مرحله ای بحث کنید
2241
01:28:06,239 –> 01:28:08,400
سه ما عملیات صف را داریم
2242
01:28:08,400 –> 01:28:10,800
عملیات صف می طلبد
2243
01:28:10,800 –> 01:28:12,560
یکی از پارامترها که قرار است این باشد
2244
01:28:12,560 –> 01:28:15,120
بنابراین فرض کنید میخواهم یکی را در صف قرار دهم
2245
01:28:15,120 –> 01:28:17,440
در داخل صف درست در ابتدا
2246
01:28:17,440 –> 01:28:18,960
جلو و عقب
2247
01:28:18,960 –> 01:28:21,600
به تهی اشاره می کرد
2248
01:28:21,600 –> 01:28:24,000
درست جلو
2249
01:28:24,000 –> 01:28:26,880
و در عقب هر دو به null اشاره می کنند
2250
01:28:26,880 –> 01:28:29,840
در ابتدا
2251
01:28:30,560 –> 01:28:32,639
حالا کاری که می خواهم انجام دهم این است
2252
01:28:32,639 –> 01:28:34,480
برای آن مورد، کاری که من می خواهم انجام دهم
2253
01:28:34,480 –> 01:28:37,679
آیا من قصد دارم بررسی کنم که آیا خود نقطه است یا خیر
2254
01:28:37,679 –> 01:28:39,040
نادر
2255
01:28:39,040 –> 01:28:41,920
خود راست یعنی ما به آن اشاره می کنیم
2256
01:28:41,920 –> 01:28:44,159
به این شی q درست است زیرا ما هستیم
2257
01:28:44,159 –> 01:28:46,480
قرار است این تابع را فراخوانی کند
2258
01:28:46,480 –> 01:28:48,719
با استفاده از شی q به سمت راست پس q نقطه
2259
01:28:48,719 –> 01:28:49,840
در صف قرار دادن
2260
01:28:49,840 –> 01:28:52,880
بنابراین اگر این شیء تهی شود
2261
01:28:52,880 –> 01:28:55,280
درسته یا هیچکدوم
2262
01:28:55,280 –> 01:28:56,719
پس از آن چیزی که ما فقط به آن می رویم
2263
01:28:56,719 –> 01:28:58,320
بگو این است
2264
01:28:58,320 –> 01:29:01,280
صف در ابتدا خالی است بنابراین برای آن
2265
01:29:01,280 –> 01:29:03,520
کاری که ما می خواهیم انجام دهیم این است
2266
01:29:03,520 –> 01:29:05,360
اختصاص خواهیم داد
2267
01:29:05,360 –> 01:29:07,440
جلو
2268
01:29:07,440 –> 01:29:10,639
و عقب
2269
01:29:10,639 –> 01:29:12,080
مساوی با
2270
01:29:12,080 –> 01:29:14,400
tem
2271
01:29:14,400 –> 01:29:16,320
درست
2272
01:29:16,320 –> 01:29:19,280
و دمای دمای ما چقدر خواهد بود
2273
01:29:19,280 –> 01:29:21,679
گره
2274
01:29:21,679 –> 01:29:23,440
و به کلاس گره ای که می رویم
2275
01:29:23,440 –> 01:29:25,280
فقط این را پاس کنید
2276
01:29:25,280 –> 01:29:27,040
داده هایی که یکی درست است پس خواهد شد
2277
01:29:27,040 –> 01:29:28,560
یک شی ایجاد کنید
2278
01:29:28,560 –> 01:29:30,719
یک شی موقت
2279
01:29:30,719 –> 01:29:32,960
که یکی را به عنوان داده و ما خواهد داشت
2280
01:29:32,960 –> 01:29:35,600
همچنین یک اشاره گر بعدی داشته باشید
2281
01:29:35,600 –> 01:29:36,840
یا بعدی
2282
01:29:36,840 –> 01:29:39,520
مرجع و قرار است تعیین کنیم
2283
01:29:39,520 –> 01:29:42,320
خود نقطه جلو برابر است با
2284
01:29:42,320 –> 01:29:43,920
دما و
2285
01:29:43,920 –> 01:29:46,719
خود نقطه عقب برابر با دما است
2286
01:29:46,719 –> 01:29:48,639
ما در واقع می توانیم آن را در یک خط انجام دهیم
2287
01:29:48,639 –> 01:29:52,400
فقط با نوشتن خود نقطه جلو
2288
01:29:52,400 –> 01:29:54,800
برابر است با نقطه خود
2289
01:29:54,800 –> 01:29:57,360
نادر برابر است با
2290
01:29:57,360 –> 01:29:59,440
درست است ما می توانیم آن را در یک خط انجام دهیم
2291
01:29:59,440 –> 01:30:01,360
همینطور درسته
2292
01:30:01,360 –> 01:30:04,239
این زمانی است که صف است
2293
01:30:04,239 –> 01:30:06,000
خالی اگر خالی نباشد آنچه هستیم
2294
01:30:06,000 –> 01:30:08,719
قرار است انجام دهید این است که اکنون می توانید ببینید
2295
01:30:08,719 –> 01:30:10,080
که
2296
01:30:10,080 –> 01:30:13,520
پس از افزودن اولین عنصر به صف
2297
01:30:13,520 –> 01:30:15,600
درست شی q چیزی به نظر می رسد
2298
01:30:15,600 –> 01:30:18,400
مثل این ما داریم
2299
01:30:18,400 –> 01:30:21,679
یکی داخل این با اشاره گر بعدی
2300
01:30:21,679 –> 01:30:24,159
و جلو و عقب به این اشاره دارد
2301
01:30:24,159 –> 01:30:26,960
در حال حاضر مخالفت کنید، فرض کنید من می خواهم
2302
01:30:26,960 –> 01:30:30,480
دوباره تابع q را به سمت راست نقطه q فراخوانی کنید
2303
01:30:30,480 –> 01:30:32,880
این یکی q dot n q است
2304
01:30:32,880 –> 01:30:37,520
یک و اکنون می خواهم q dot nq را صدا کنم
2305
01:30:37,520 –> 01:30:40,239
بیایید ببینیم که می خواهیم دو را در اینجا وارد کنیم
2306
01:30:40,239 –> 01:30:41,040
بنابراین
2307
01:30:41,040 –> 01:30:43,440
اوه ما فقط باید جلو و
2308
01:30:43,440 –> 01:30:44,960
اشاره گرهای عقب
2309
01:30:44,960 –> 01:30:46,880
و گاهی اوقات ما باید بعدی را تغییر دهیم
2310
01:30:46,880 –> 01:30:50,080
اشاره گر این گره برای درج
2311
01:30:50,080 –> 01:30:52,159
عنصر داخل صف درست می دانیم
2312
01:30:52,159 –> 01:30:54,560
که صف در انجام می شود
2313
01:30:54,560 –> 01:30:55,679
انتهای عقب
2314
01:30:55,679 –> 01:30:57,840
درست است پس کاری که می خواهیم انجام دهیم این است
2315
01:30:57,840 –> 01:31:00,000
اوه ابتدا بررسی می کنیم که آیا خود نقطه عقب است یا خیر
2316
01:31:00,000 –> 01:31:02,960
مساوی برابر با null است تا بتوانید ببینید
2317
01:31:02,960 –> 01:31:04,960
عقب به نول اشاره نمی کند
2318
01:31:04,960 –> 01:31:06,560
در اینجا به 1 اشاره می کند
2319
01:31:06,560 –> 01:31:08,400
بنابراین
2320
01:31:08,400 –> 01:31:11,120
ما قرار نیست جبهه عوض کنیم زیرا
2321
01:31:11,120 –> 01:31:12,880
جلو است
2322
01:31:12,880 –> 01:31:14,880
در صورت وجود همین خواهد بود
2323
01:31:14,880 –> 01:31:17,440
عملیات صف ما جلو را تغییر نمی دهیم
2324
01:31:17,440 –> 01:31:19,679
اکنون کاری که ما می خواهیم انجام دهیم این است
2325
01:31:19,679 –> 01:31:21,520
دو مرحله وجود دارد
2326
01:31:21,520 –> 01:31:23,040
و باید انجام شوند
2327
01:31:23,040 –> 01:31:25,040
به طور متوالی ابتدا باید انجام دهید
2328
01:31:25,040 –> 01:31:26,719
مرحله اول و سپس
2329
01:31:26,719 –> 01:31:30,880
مرحله دوم بنابراین ما می خواهیم اختصاص دهیم
2330
01:31:30,880 –> 01:31:34,239
خود نقطه نادر نقطه بعدی
2331
01:31:34,239 –> 01:31:35,360
درست
2332
01:31:35,360 –> 01:31:37,520
منظور از self dot rear dot چیست
2333
01:31:37,520 –> 01:31:38,400
بعد
2334
01:31:38,400 –> 01:31:41,440
خود نقطه عقب که این یکی است
2335
01:31:41,440 –> 01:31:43,120
به 1 اشاره می کند
2336
01:31:43,120 –> 01:31:45,679
و وقتی میگویم نقطه بعدی
2337
01:31:45,679 –> 01:31:48,239
این بدان معنی است که ما در واقع اینجا هستیم
2338
01:31:48,239 –> 01:31:50,400
در این موقعیت درست است، بنابراین ما می رویم
2339
01:31:50,400 –> 01:31:51,760
آن را اختصاص دهد
2340
01:31:51,760 –> 01:31:53,199
مانند
2341
01:31:53,199 –> 01:31:55,040
دما
2342
01:31:55,040 –> 01:31:55,920
درست
2343
01:31:55,920 –> 01:31:59,120
اکنون دما برابر با گره 2 خواهد بود
2344
01:31:59,120 –> 01:32:03,280
بنابراین دما برابر با گره 2 است
2345
01:32:05,199 –> 01:32:06,000
درست
2346
01:32:06,000 –> 01:32:09,280
بنابراین خود نقطه عقب نقطه بعدی برابر با دما است
2347
01:32:09,280 –> 01:32:11,280
یعنی الان
2348
01:32:11,280 –> 01:32:14,560
دما 2 است بنابراین 2 به اینجا می آید
2349
01:32:14,560 –> 01:32:16,159
و
2350
01:32:16,159 –> 01:32:20,000
2 همچنین یک نشانگر بعدی دارد
2351
01:32:20,239 –> 01:32:23,840
بنابراین در حال حاضر شما می توانید ببینید که عقب هنوز است
2352
01:32:23,840 –> 01:32:26,320
اینجا هوا هنوز به اینجا اشاره می کرد که ما داریم
2353
01:32:26,320 –> 01:32:28,800
فقط اختصاص داده شده ما به تازگی درج شده است
2354
01:32:28,800 –> 01:32:29,760
ارزش
2355
01:32:29,760 –> 01:32:31,040
از دما
2356
01:32:31,040 –> 01:32:33,760
که گره 2 است که ما آن را درج کرده ایم
2357
01:32:33,760 –> 01:32:35,600
روبروی
2358
01:32:35,600 –> 01:32:36,880
در عقب
2359
01:32:36,880 –> 01:32:39,600
فقط در مقابل این در حال حاضر
2360
01:32:39,600 –> 01:32:41,520
از آنجایی که این یک عملیات صف است که ما انجام می دهیم
2361
01:32:41,520 –> 01:32:43,760
نه تغییر جلو ما لایه را تغییر می دهیم
2362
01:32:43,760 –> 01:32:45,760
بنابراین در مرحله دوم من فقط می خواهم
2363
01:32:45,760 –> 01:32:49,600
تخصیص خود نقطه عقب
2364
01:32:49,760 –> 01:32:51,040
درست
2365
01:32:51,040 –> 01:32:53,760
این نقطه خود در اینجا باید به دما اشاره کند
2366
01:32:53,760 –> 01:32:56,159
درست است پس من فقط می خواهم بنویسم
2367
01:32:56,159 –> 01:32:59,520
self dot rare برابر با temp right است
2368
01:32:59,520 –> 01:33:02,159
بنابراین در حال حاضر عقب دوباره به
2369
01:33:02,159 –> 01:33:04,880
این موقعیت پس از قرار دادن دو شما
2370
01:33:04,880 –> 01:33:08,159
می تواند وضعیت شی صف را ببیند
2371
01:33:08,159 –> 01:33:11,520
اینجوری میشه 1 2
2372
01:33:11,520 –> 01:33:12,400
بعد
2373
01:33:12,400 –> 01:33:14,560
و عقب به 2 اشاره می کند زیرا چنین است
2374
01:33:14,560 –> 01:33:16,560
بعد از 1 درج شد
2375
01:33:16,560 –> 01:33:18,880
و جلو به 1 اشاره می کند پس این است
2376
01:33:18,880 –> 01:33:21,280
چگونه عملیات صف را انجام می دهیم
2377
01:33:21,280 –> 01:33:23,520
عملیات dq را در ادامه بحث کنید
2378
01:33:23,520 –> 01:33:26,639
آموزش و در آن نیز ما فقط
2379
01:33:26,639 –> 01:33:28,639
نشانگر جلو را تغییر دهید
2380
01:33:28,639 –> 01:33:30,480
و ما باید مقدار بیشتری بسازیم
2381
01:33:30,480 –> 01:33:32,560
مرجع نیز تغییر می کند
2382
01:33:32,560 –> 01:33:35,760
که مرحله اول است
2383
01:33:35,760 –> 01:33:38,159
در مرحله اول یک کلاس ایجاد می کنیم
2384
01:33:38,159 –> 01:33:40,400
صف
2385
01:33:41,760 –> 01:33:43,280
درست
2386
01:33:43,280 –> 01:33:45,440
و در این کلاس صف اول است
2387
01:33:45,440 –> 01:33:47,360
I’m going to do is I’m going to تعریف a
2388
01:33:47,360 –> 01:33:49,040
سازنده
2389
01:33:49,040 –> 01:33:51,679
برای مقداردهی اولیه
2390
01:33:51,679 –> 01:33:55,600
اوه خود نقطه جلو و عقب به صورت تهی سمت راست
2391
01:33:55,600 –> 01:33:58,800
بنابراین از درون این ما خود را عبور خواهیم داد
2392
01:33:58,800 –> 01:34:01,360
و در اینجا می خواهم تعریف کنم
2393
01:34:01,360 –> 01:34:05,040
اوه خود نقطه جلو
2394
01:34:05,040 –> 01:34:06,560
برابر است با
2395
01:34:06,560 –> 01:34:09,600
خود نقطه نادر
2396
01:34:09,600 –> 01:34:11,440
درست است و هر دو با هیچ یک برابرند
2397
01:34:11,440 –> 01:34:13,040
در ابتدا به دلیل
2398
01:34:13,040 –> 01:34:15,920
اوه لیست پیوندی یا صف خالی است
2399
01:34:15,920 –> 01:34:17,760
درست است، بنابراین من فقط می خواهم اینجا بنویسم q
2400
01:34:17,760 –> 01:34:18,639
است
2401
01:34:18,639 –> 01:34:21,040
خالی
2402
01:34:21,600 –> 01:34:23,440
اکنون در مرحله بعدی
2403
01:34:23,440 –> 01:34:25,679
ما می خواهیم ایجاد کنیم
2404
01:34:25,679 –> 01:34:28,000
بیایید یک تابع ابزار دیگر ایجاد کنیم
2405
01:34:28,000 –> 01:34:29,199
درست
2406
01:34:29,199 –> 01:34:32,639
که ما آن را به عنوان تابع خالی فراخوانی می کنیم
2407
01:34:32,639 –> 01:34:34,639
که در واقع به ما خواهد داد
2408
01:34:34,639 –> 01:34:36,560
ارزش
2409
01:34:36,560 –> 01:34:38,639
چه
2410
01:34:38,639 –> 01:34:41,520
صف خالی است یا درست نیست
2411
01:34:41,520 –> 01:34:45,119
چرا نام خالی است پس اگر
2412
01:34:45,119 –> 01:34:48,000
اگر درست است یا نادرست را برمی گردانیم
2413
01:34:48,000 –> 01:34:49,360
را
2414
01:34:49,360 –> 01:34:52,080
ارزش جلو سمت راست یا جلو
2415
01:34:52,080 –> 01:34:55,119
مرجع برابر با null است
2416
01:34:55,119 –> 01:34:58,639
درست است بنابراین اگر جلو تهی است که من آن را
2417
01:34:58,639 –> 01:35:00,639
به این معنی است که صف خالی است بنابراین خواهد شد
2418
01:35:00,639 –> 01:35:03,840
بازگشت true به این معنی است که
2419
01:35:03,840 –> 01:35:05,760
صف خالی است سمت راست پس خالی است
2420
01:35:05,760 –> 01:35:07,600
تابع سودمند
2421
01:35:07,600 –> 01:35:08,320
بنابراین
2422
01:35:08,320 –> 01:35:10,000
این اولین قدم است
2423
01:35:10,000 –> 01:35:12,960
اکنون در اینجا من می خواهم یک را ایجاد کنم
2424
01:35:12,960 –> 01:35:16,719
شیء q با استفاده از نقطه q
2425
01:35:16,719 –> 01:35:19,119
ببخشید q class درسته
2426
01:35:19,119 –> 01:35:22,000
چیزی مثل این
2427
01:35:22,000 –> 01:35:24,159
بعد از انجام این کار، کاری که باید انجام دهیم این است
2428
01:35:24,159 –> 01:35:28,600
تابع enqueue را فراخوانی کنید
2429
01:35:31,119 –> 01:35:33,760
مانند این و ما می خواهیم داده 1 را منتقل کنیم
2430
01:35:33,760 –> 01:35:34,800
اینجا درست است
2431
01:35:34,800 –> 01:35:36,960
حالا قبل از نوشتن تابع صف
2432
01:35:36,960 –> 01:35:40,800
ما باید مرحله 2 را انجام دهیم
2433
01:35:40,800 –> 01:35:44,000
بالای این یکی راست
2434
01:35:44,000 –> 01:35:46,480
بنابراین مرحله دو
2435
01:35:46,480 –> 01:35:48,400
ایجاد یک کلاس گره درست است
2436
01:35:48,400 –> 01:35:51,440
هر زمان که بخواهیم گره uh را وارد کنیم
2437
01:35:51,440 –> 01:35:53,760
در داخل این صف ابتدا خواهیم داشت
2438
01:35:53,760 –> 01:35:56,960
برای تعریف کلاس گره به سمت راست
2439
01:35:56,960 –> 01:35:58,960
این کلاس گره خواهد بود
2440
01:35:58,960 –> 01:35:59,840
دارند
2441
01:35:59,840 –> 01:36:02,800
دوباره سازنده
2442
01:36:02,800 –> 01:36:05,199
من از خود عبور خواهم کرد
2443
01:36:05,199 –> 01:36:07,920
و اینجا
2444
01:36:08,159 –> 01:36:11,520
من قصد دارم self.data را درست بنویسم
2445
01:36:11,520 –> 01:36:12,960
دو خواهد داشت
2446
01:36:12,960 –> 01:36:14,400
اوه
2447
01:36:14,400 –> 01:36:17,440
مقادیری که self.data خواهد بود و هست
2448
01:36:17,440 –> 01:36:19,040
قرار است داده ها درست باشد
2449
01:36:19,040 –> 01:36:22,080
سازنده که از خود عبور می کنیم
2450
01:36:22,080 –> 01:36:24,880
و داده ها نیز بنابراین من می خواهم اینجا بنویسم
2451
01:36:24,880 –> 01:36:26,880
داده ها
2452
01:36:26,880 –> 01:36:29,199
و ما یک چیز دیگر داریم که این است
2453
01:36:29,199 –> 01:36:31,440
اشاره گر بعدی
2454
01:36:31,440 –> 01:36:33,679
درست
2455
01:36:33,760 –> 01:36:35,920
و در ابتدا باطل می شود
2456
01:36:35,920 –> 01:36:37,440
درست
2457
01:36:37,440 –> 01:36:39,679
اکنون این مرحله اول است و این مرحله است
2458
01:36:39,679 –> 01:36:42,400
مرحله دوم ما درست در مورد آنها بحث کرده ایم
2459
01:36:42,400 –> 01:36:44,480
سازنده ها را آماده داشته باشید ما آن ها را داریم
2460
01:36:44,480 –> 01:36:46,400
کلاس گره آماده است
2461
01:36:46,400 –> 01:36:48,880
اکنون زمان ایجاد صف است
2462
01:36:48,880 –> 01:36:51,199
تابع که مرحله سوم است
2463
01:36:51,199 –> 01:36:52,719
همین جا
2464
01:36:52,719 –> 01:36:54,800
به یاد داشته باشید که ما صف را ایجاد خواهیم کرد
2465
01:36:54,800 –> 01:36:57,119
تابع داخل کلاس صف سمت راست
2466
01:36:57,119 –> 01:36:57,840
بنابراین
2467
01:36:57,840 –> 01:37:00,239
فقط مطمئن شوید که تورفتگی را ترک کنید
2468
01:37:00,239 –> 01:37:03,040
درست است وگرنه مقداری به شما می دهد
2469
01:37:03,040 –> 01:37:03,920
خطا
2470
01:37:03,920 –> 01:37:06,159
درست است در مرحله 3
2471
01:37:06,159 –> 01:37:11,040
باید تابع enqueue را تعریف کنیم
2472
01:37:11,040 –> 01:37:14,000
چیزی مثل این
2473
01:37:14,000 –> 01:37:16,800
و این تابع صف در واقع از است
2474
01:37:16,800 –> 01:37:19,199
شی صف بنابراین من می خواهم عبور کنم
2475
01:37:19,199 –> 01:37:21,119
خود
2476
01:37:21,119 –> 01:37:24,000
و همچنین داده ها را می گیرد
2477
01:37:24,000 –> 01:37:26,080
چیزی شبیه به این درست است
2478
01:37:26,080 –> 01:37:28,159
بنابراین اکنون در عملیات صف داریم
2479
01:37:28,159 –> 01:37:31,600
در اینجا بحث شده است، می توانید مراحل را مشاهده کنید
2480
01:37:31,600 –> 01:37:34,960
درست ابتدا باید این را تعریف کنیم
2481
01:37:34,960 –> 01:37:36,960
موردی که خود نقطه عقب برابر است با
2482
01:37:36,960 –> 01:37:38,960
برابر است با حق تهی اجازه دهید به سرعت
2483
01:37:38,960 –> 01:37:41,679
این مورد را تعریف کنید
2484
01:37:41,679 –> 01:37:43,840
اگر اول از همه یک را اختصاص دهیم
2485
01:37:43,840 –> 01:37:45,600
اشاره گر موقت
2486
01:37:45,600 –> 01:37:48,080
راست یا یک گره موقت و ما خواهیم کرد
2487
01:37:48,080 –> 01:37:51,199
داده ها را به این گره منتقل کنید
2488
01:37:51,199 –> 01:37:53,760
مثل این
2489
01:37:54,159 –> 01:37:56,159
و اکنون می خواهیم پرونده را بنویسیم
2490
01:37:56,159 –> 01:37:57,920
اگر نادر است
2491
01:37:57,920 –> 01:37:59,520
یا خود نقطه
2492
01:37:59,520 –> 01:38:02,800
عقب مساوی است با
2493
01:38:02,800 –> 01:38:06,080
null به این معنی است که لیست پیوندی ما
2494
01:38:06,080 –> 01:38:08,800
یا اگر اینطور باشد صف خالی است
2495
01:38:08,800 –> 01:38:09,760
را
2496
01:38:09,760 –> 01:38:11,760
مورد پس از آن ما به خود اختصاص می دهیم
2497
01:38:11,760 –> 01:38:13,920
نقطه جلو برابر است با
2498
01:38:13,920 –> 01:38:15,840
خود نقطه
2499
01:38:15,840 –> 01:38:16,719
و
2500
01:38:16,719 –> 01:38:19,040
هر دو برابر خواهند بود
2501
01:38:19,040 –> 01:38:20,480
حق باطل
2502
01:38:20,480 –> 01:38:21,280
بنابراین
2503
01:38:21,280 –> 01:38:24,000
هیچ کدام نخواهد بود
2504
01:38:24,000 –> 01:38:26,000
بسیار خوب، بنابراین ما دومی را پوشش داده ایم
2505
01:38:26,000 –> 01:38:29,600
اوه مرحله یک از این مرحله سه به
2506
01:38:29,600 –> 01:38:31,600
کلاس enqueue را ایجاد کنید
2507
01:38:31,600 –> 01:38:34,239
حالا چه اتفاقی خواهد افتاد اگر
2508
01:38:34,239 –> 01:38:36,239
صف خالی نیست پس مجبوریم
2509
01:38:36,239 –> 01:38:38,400
انجام این عملیات ما خواهیم داشت
2510
01:38:38,400 –> 01:38:40,400
قبلاً در مورد این دو مرحله بحث شده است
2511
01:38:40,400 –> 01:38:42,080
آموزش قبلی
2512
01:38:42,080 –> 01:38:43,119
درست
2513
01:38:43,119 –> 01:38:46,639
پس بیایید این دو مرحله را تعریف کنیم تا اگر
2514
01:38:46,639 –> 01:38:48,480
این مورد نیست
2515
01:38:48,480 –> 01:38:50,560
اگر خود.نادر
2516
01:38:50,560 –> 01:38:52,480
برابر تهی نیست
2517
01:38:52,480 –> 01:38:54,159
سپس کاری که ما می خواهیم انجام دهیم به سادگی است
2518
01:38:54,159 –> 01:38:56,840
قرار است بگوییم
2519
01:38:56,840 –> 01:38:59,360
self.rare.next برابر است با
2520
01:38:59,360 –> 01:39:00,560
دما
2521
01:39:00,560 –> 01:39:02,880
و خود نقطه نادر است
2522
01:39:02,880 –> 01:39:06,000
برابر است با temp right دو مرحله آسان
2523
01:39:06,000 –> 01:39:07,760
ما در اینجا آنها را مورد بحث قرار داده ایم
2524
01:39:07,760 –> 01:39:11,119
ما نقطه بعدی خود را نقطه کمیاب اختصاص می دهیم
2525
01:39:11,119 –> 01:39:13,440
اوه به عنوان دما و
2526
01:39:13,440 –> 01:39:15,760
خود نقطه عقب ما در حال تخصیص مجدد هستیم
2527
01:39:15,760 –> 01:39:18,480
اشاره عقب به اشاره به
2528
01:39:18,480 –> 01:39:20,159
گره موقت
2529
01:39:20,159 –> 01:39:22,159
بنابراین به این ترتیب می توانیم مقداری را وارد کنیم
2530
01:39:22,159 –> 01:39:24,639
عناصر داخل صف درست است پس اجازه دهید
2531
01:39:24,639 –> 01:39:26,960
بیشتر تماس بگیرید
2532
01:39:26,960 –> 01:39:28,960
این تابع صف را بیشتر فراخوانی کنید
2533
01:39:28,960 –> 01:39:31,280
بارهایی مثل 2
2534
01:39:31,280 –> 01:39:33,440
و ما دوباره با شماره 3 تماس خواهیم گرفت
2535
01:39:33,440 –> 01:39:36,719
درسته این بار سومه
2536
01:39:38,000 –> 01:39:40,080
و بیایید بگوییم که یک چاپ را تعریف می کنیم
2537
01:39:40,080 –> 01:39:41,360
عملکرد
2538
01:39:41,360 –> 01:39:43,440
یا عملکرد نمایش که نمایش می دهد
2539
01:39:43,440 –> 01:39:45,760
محتویات
2540
01:39:45,760 –> 01:39:47,360
لیست پیوندی
2541
01:39:47,360 –> 01:39:49,360
متاسفم این صف
2542
01:39:49,360 –> 01:39:51,280
که با استفاده از لینک در حال پیاده سازی آن هستیم
2543
01:39:51,280 –> 01:39:53,360
درست لیست کنید
2544
01:39:53,360 –> 01:39:56,400
در اینجا ما مرحله سه را داریم
2545
01:39:56,400 –> 01:39:58,480
و
2546
01:39:58,480 –> 01:40:00,560
من می خواهم عملکرد نمایش را تعریف کنم
2547
01:40:00,560 –> 01:40:02,480
اینجا
2548
01:40:02,480 –> 01:40:04,639
با خود
2549
01:40:04,639 –> 01:40:06,320
درست
2550
01:40:06,320 –> 01:40:08,159
بسیار خوب پس بیایید نمایشگر را تعریف کنیم
2551
01:40:08,159 –> 01:40:10,719
تابعی که قرار است
2552
01:40:10,719 –> 01:40:13,760
صف، بنابراین ما می خواهیم از شروع
2553
01:40:13,760 –> 01:40:15,520
خود نقطه جلو
2554
01:40:15,520 –> 01:40:17,360
درست است اگر
2555
01:40:17,360 –> 01:40:19,440
جلو
2556
01:40:19,440 –> 01:40:21,040
جلوی صفی است که می رویم
2557
01:40:21,040 –> 01:40:23,119
برای شروع نمایش محتویات از
2558
01:40:23,119 –> 01:40:25,040
جلو سمت راست بنابراین یک دو و
2559
01:40:25,040 –> 01:40:25,840
سه
2560
01:40:25,840 –> 01:40:27,600
بنابراین ما بررسی خواهیم کرد که آیا جلو است
2561
01:40:27,600 –> 01:40:29,920
null در این صورت ما می خواهیم خارج شویم
2562
01:40:29,920 –> 01:40:32,080
خارج از این حلقه while و اکنون آنچه هستم
2563
01:40:32,080 –> 01:40:33,920
قرار است انجام دهم این است که من فقط می خواهم چاپ کنم
2564
01:40:33,920 –> 01:40:34,840
را
2565
01:40:34,840 –> 01:40:38,000
داده های سمت راست جلو تا خود نقطه
2566
01:40:38,000 –> 01:40:40,639
اطلاعات نقطه دوست
2567
01:40:40,639 –> 01:40:42,960
مرحله بعدی این است که
2568
01:40:42,960 –> 01:40:45,199
نشانگر جلویی را دوباره به سمت راست اختصاص دهید پس من هستم
2569
01:40:45,199 –> 01:40:47,119
قصد دارم به
2570
01:40:47,119 –> 01:40:52,000
آن را اختصاص دهید خود نقطه جلو برابر است با
2571
01:40:52,000 –> 01:40:55,119
خود نقطه جلو نقطه بعدی
2572
01:40:55,119 –> 01:40:57,199
درست است به جای تغییر مقدار
2573
01:40:57,199 –> 01:40:58,800
در مقابل کاری که می خواهیم انجام دهیم این هستیم
2574
01:40:58,800 –> 01:41:01,040
قرار است یک ارزش موقت ایجاد کنند
2575
01:41:01,040 –> 01:41:03,199
درست است که ما آن را به عنوان temp
2576
01:41:03,199 –> 01:41:05,119
زیرا ما نمی خواهیم آن را تغییر دهیم
2577
01:41:05,119 –> 01:41:06,800
در واقع جلو
2578
01:41:06,800 –> 01:41:08,239
بنابراین
2579
01:41:08,239 –> 01:41:10,320
ما می خواهیم جلوی خود نقطه را جایگزین کنیم
2580
01:41:10,320 –> 01:41:12,960
توسط دما به
2581
01:41:12,960 –> 01:41:15,520
چیزی مثل این
2582
01:41:15,520 –> 01:41:18,800
بنابراین داده های دمایی 2 نقطه ای خواهد بود
2583
01:41:18,800 –> 01:41:22,800
و در اینجا نیز دمای 2 را داریم
2584
01:41:22,800 –> 01:41:24,719
برابر با دما است
2585
01:41:24,719 –> 01:41:27,600
دمای 2 نقطه
2586
01:41:31,440 –> 01:41:33,280
سمت راست بعدی، بنابراین ما به این ترتیب خواهیم رفت
2587
01:41:33,280 –> 01:41:35,520
نمایش مطالب این
2588
01:41:35,520 –> 01:41:37,679
بنابراین
2589
01:41:38,239 –> 01:41:39,840
بسیار خوب پس پس از اجرای این ما هستیم
2590
01:41:39,840 –> 01:41:42,239
دریافت برخی از خطا در اینجا شما می توانید ببینید
2591
01:41:42,239 –> 01:41:44,880
خطا در تابع صف است
2592
01:41:44,880 –> 01:41:47,520
در خط خود نقطه عقب نقطه بعدی
2593
01:41:47,520 –> 01:41:49,840
مساوی است با دمای همه چیز درست است
2594
01:41:49,840 –> 01:41:52,719
خطا هیچ نوع شی فاقد ویژگی است
2595
01:41:52,719 –> 01:41:55,040
بعدش خوبه پس باید بریم
2596
01:41:55,040 –> 01:41:56,320
اینجا
2597
01:41:56,320 –> 01:41:58,400
در تابع صف
2598
01:41:58,400 –> 01:42:00,400
بسیار خوب، بنابراین من می توانم خطا را در اینجا ببینم
2599
01:42:00,400 –> 01:42:03,119
خود نقطه دوست جلو برابر با خود است
2600
01:42:03,119 –> 01:42:05,600
نقطه عقب برابر با آن نباید هیچ باشد
2601
01:42:05,600 –> 01:42:08,800
باید از نوع uh نوع temp right باشد
2602
01:42:08,800 –> 01:42:10,080
بنابراین شما می توانید ببینید
2603
01:42:10,080 –> 01:42:11,920
به وضوح اینجاست
2604
01:42:11,920 –> 01:42:14,639
برابر با temp بود و ما a را انجام دادیم
2605
01:42:14,639 –> 01:42:17,920
اشتباه با اختصاص دادن آن به null right بنابراین
2606
01:42:17,920 –> 01:42:20,000
بیایید دوباره این برنامه را اجرا کنیم
2607
01:42:20,000 –> 01:42:21,679
و در اینجا می توانید ببینید
2608
01:42:21,679 –> 01:42:23,679
محتویات را نمایش می دهد
2609
01:42:23,679 –> 01:42:26,400
صف، بنابراین به این ترتیب می توانیم درج کنیم
2610
01:42:26,400 –> 01:42:28,400
عناصر داخل صف و شما
2611
01:42:28,400 –> 01:42:30,000
می توانید ببینید که چگونه ما دو را حفظ می کنیم
2612
01:42:30,000 –> 01:42:32,960
متغیرهای جلو و عقب و ما چگونه هستیم
2613
01:42:32,960 –> 01:42:35,679
تخصیص این مراجع تا اساسا
2614
01:42:35,679 –> 01:42:38,320
در عملیات صف این دو مرحله
2615
01:42:38,320 –> 01:42:40,850
تنها مراحل مهم هستند
2616
01:42:40,850 –> 01:42:43,360
[موسیقی]
2617
01:42:43,360 –> 01:42:45,679
ما قصد داریم در مورد درختان باینری مطالعه کنیم
2618
01:42:45,679 –> 01:42:47,119
و ما قصد داریم همه موارد را پوشش دهیم
2619
01:42:47,119 –> 01:42:49,119
نکات مهم مربوط به باینری
2620
01:42:49,119 –> 01:42:50,400
موضوع درختان
2621
01:42:50,400 –> 01:42:52,719
تاکنون داده ها را مطالعه کرده ایم
2622
01:42:52,719 –> 01:42:55,840
ساختارهایی مانند صف های لیست پیوندی و
2623
01:42:55,840 –> 01:42:58,639
پشته تمام این ساختارهای داده است
2624
01:42:58,639 –> 01:43:00,080
اساسا
2625
01:43:00,080 –> 01:43:02,080
ساختارهای داده خطی که به این معنی است
2626
01:43:02,080 –> 01:43:04,239
داده ها به صورت خطی ذخیره خواهند شد
2627
01:43:04,239 –> 01:43:06,560
مد در آن ساختار داده
2628
01:43:06,560 –> 01:43:08,320
که اساسا
2629
01:43:08,320 –> 01:43:11,119
یک محدودیت است زیرا به ما زمان می دهد
2630
01:43:11,119 –> 01:43:13,840
پیچیدگی o بزرگ از n
2631
01:43:13,840 –> 01:43:17,840
که در مورد لیست پیوندی است
2632
01:43:18,320 –> 01:43:22,920
و پشته ها و صف ها و غیره
2633
01:43:25,600 –> 01:43:27,280
در حال حاضر به منظور
2634
01:43:27,280 –> 01:43:30,159
این پیچیدگی زمانی را بسیار بهتر کنید
2635
01:43:30,159 –> 01:43:32,560
به منظور کاهش پیچیدگی زمانی
2636
01:43:32,560 –> 01:43:34,560
ساختارهای داده درختی باینری واقعا هستند
2637
01:43:34,560 –> 01:43:36,960
مفید است زیرا آنها متفاوت هستند
2638
01:43:36,960 –> 01:43:39,199
نوع سازه ای که a
2639
01:43:39,199 –> 01:43:42,719
ساختار داده غیر خطی
2640
01:43:43,520 –> 01:43:45,600
همانطور که قبلاً می دانیم که ساختارهای داده
2641
01:43:45,600 –> 01:43:48,080
فقط داده هستند اما متفاوت هستند
2642
01:43:48,080 –> 01:43:50,560
ساختارهایی که آنها را متفاوت می کند
2643
01:43:50,560 –> 01:43:53,199
نوع مزیت بنابراین در مورد باینری
2644
01:43:53,199 –> 01:43:56,560
درختان اگر بخواهیم جستجو انجام دهیم
2645
01:43:56,560 –> 01:43:59,360
عملیات یا حتی برخی عملیات های دیگر
2646
01:43:59,360 –> 01:44:01,040
می تواند زمان بسیار کمتری به ما بدهد
2647
01:44:01,040 –> 01:44:03,280
پیچیدگی که در آینده خواهیم دید
2648
01:44:03,280 –> 01:44:04,320
بیت
2649
01:44:04,320 –> 01:44:06,320
بنابراین بیایید سعی کنیم نحوه داده ها را درک کنیم
2650
01:44:06,320 –> 01:44:07,920
ساختار به نظر می رسد آنچه است
2651
01:44:07,920 –> 01:44:09,840
ترتیب داده ها
2652
01:44:09,840 –> 01:44:11,920
بنابراین بیایید در نظر بگیریم که این داده ها را داریم
2653
01:44:11,920 –> 01:44:14,239
اولین
2654
01:44:17,440 –> 01:44:18,480
و اینجا
2655
01:44:18,480 –> 01:44:20,159
حالا فرض کنید می خواهیم این را وارد کنیم
2656
01:44:20,159 –> 01:44:22,480
داده های داخل درخت باینری
2657
01:44:22,480 –> 01:44:24,960
هر درخت باینری از همان ابتدا شروع می شود
2658
01:44:24,960 –> 01:44:27,360
اولین گره که به آن نیز معروف است
2659
01:44:27,360 –> 01:44:29,040
گره ریشه
2660
01:44:29,040 –> 01:44:30,880
بنابراین اولین کار
2661
01:44:30,880 –> 01:44:32,639
در نوشتن برنامه برای ایجاد یک
2662
01:44:32,639 –> 01:44:35,040
درخت دودویی برای اختصاص یک ریشه است
2663
01:44:35,040 –> 01:44:36,960
مرجعی که در ابتدا خواهد بود
2664
01:44:36,960 –> 01:44:39,760
با اشاره به یک مقدار تهی و سپس ما
2665
01:44:39,760 –> 01:44:42,400
وقتی می خواهیم مقداری را در داخل وارد کنیم
2666
01:44:42,400 –> 01:44:44,800
درخت دوتایی که می خواهیم بسازیم
2667
01:44:44,800 –> 01:44:46,719
این مرجع
2668
01:44:46,719 –> 01:44:49,119
برای اشاره به این گره
2669
01:44:49,119 –> 01:44:51,520
هر گره داخل یک درخت باینری است
2670
01:44:51,520 –> 01:44:54,080
یک واحد اساسی یکسان خواهد داشت
2671
01:44:54,080 –> 01:44:55,119
ساختار
2672
01:44:55,119 –> 01:44:57,920
که ما یک گره با تعدادی خواهیم داشت
2673
01:44:57,920 –> 01:44:59,199
داده ها
2674
01:44:59,199 –> 01:45:01,199
و ما دو متفاوت خواهیم داشت
2675
01:45:01,199 –> 01:45:02,400
جهت ها
2676
01:45:02,400 –> 01:45:05,360
یا دو مرجع حافظه متفاوت
2677
01:45:05,360 –> 01:45:07,520
اولین مورد حافظه سمت چپ خواهد بود
2678
01:45:07,520 –> 01:45:09,199
مرجع و دومی خواهد بود
2679
01:45:09,199 –> 01:45:11,199
مرجع حافظه مناسب
2680
01:45:11,199 –> 01:45:13,360
در ابتدا زمانی که ما در تلاش برای ایجاد یک
2681
01:45:13,360 –> 01:45:15,199
گره بنیادی
2682
01:45:15,199 –> 01:45:17,440
این گره چیزی به نظر می رسد
2683
01:45:17,440 –> 01:45:18,480
مثل این
2684
01:45:18,480 –> 01:45:20,719
و این مراجع اشاره می کنند
2685
01:45:20,719 –> 01:45:23,280
به مقادیر صفر
2686
01:45:23,280 –> 01:45:25,440
حالا وقتی می خواهیم یک باینری بسازیم
2687
01:45:25,440 –> 01:45:28,080
درخت ما فقط می خواهیم این گره را فشار دهیم
2688
01:45:28,080 –> 01:45:30,560
در داخل درخت دودویی پس بیایید بگوییم
2689
01:45:30,560 –> 01:45:32,639
ما می خواهیم 5 را به داخل باینری فشار دهیم
2690
01:45:32,639 –> 01:45:34,880
درخت ما ابتدا می خواهیم این را ایجاد کنیم
2691
01:45:34,880 –> 01:45:37,280
گره اساسی و ما از قبل می دانیم
2692
01:45:37,280 –> 01:45:39,119
که ما می توانیم یک شی از این ایجاد کنیم
2693
01:45:39,119 –> 01:45:40,000
کلاس
2694
01:45:40,000 –> 01:45:40,880
گره
2695
01:45:40,880 –> 01:45:43,040
که این شی و آن را می سازد
2696
01:45:43,040 –> 01:45:45,600
این داده ها و این دو را تخصیص خواهد داد
2697
01:45:45,600 –> 01:45:47,600
ارجاعات در حافظه
2698
01:45:47,600 –> 01:45:49,840
بنابراین پنج با دو تخصیص داده می شود
2699
01:45:49,840 –> 01:45:52,000
مراجعی که در ابتدا اختصاص داده شده اند
2700
01:45:52,000 –> 01:45:53,360
به عنوان پوچ
2701
01:45:53,360 –> 01:45:54,880
و ما قصد داریم مطمئن شویم که
2702
01:45:54,880 –> 01:45:57,520
root اکنون به پنج مورد اشاره می کند
2703
01:45:57,520 –> 01:46:00,239
اولین گره به جای null است
2704
01:46:00,239 –> 01:46:01,760
حالا فرض کنید می خواهیم مقداری را وارد کنیم
2705
01:46:01,760 –> 01:46:05,280
داده های بیشتر چهار و شش، بنابراین در اینجا بیایید بگوییم
2706
01:46:05,280 –> 01:46:08,159
من می خواهم چهار را وارد کنم
2707
01:46:08,159 –> 01:46:12,800
و در اینجا می خواهم شش را وارد کنم
2708
01:46:12,800 –> 01:46:14,719
و ما می دانیم که وقتی می خواهیم درج کنیم
2709
01:46:14,719 –> 01:46:15,840
هر گره
2710
01:46:15,840 –> 01:46:18,000
هر گره دو متفاوت خواهد داشت
2711
01:46:18,000 –> 01:46:19,600
اشاره گرها
2712
01:46:19,600 –> 01:46:21,440
و آنها قصد دارند به null اشاره کنند
2713
01:46:21,440 –> 01:46:23,920
ما باید مطمئن شویم که چپ
2714
01:46:23,920 –> 01:46:27,040
مرجع حافظه ارجاع به
2715
01:46:27,040 –> 01:46:29,520
عنصری که می خواهیم در آن وارد کنیم
2716
01:46:29,520 –> 01:46:31,520
قسمت چپ درخت
2717
01:46:31,520 –> 01:46:33,840
بنابراین فرض کنید من می خواهم 9 را در آن وارد کنم
2718
01:46:33,840 –> 01:46:36,080
بخشی از این را ترک کردم، بنابراین باید آن را بسازم
2719
01:46:36,080 –> 01:46:36,960
مطمئن
2720
01:46:36,960 –> 01:46:40,159
که ابتدا آن را با ایجاد یک تخصیص می دهم
2721
01:46:40,159 –> 01:46:42,800
شیء کلاس گره و ارائه
2722
01:46:42,800 –> 01:46:44,639
ارائه داده ها
2723
01:46:44,639 –> 01:46:47,440
در زمان فراخوانی شی من فقط می توانم
2724
01:46:47,440 –> 01:46:49,199
داده ها را ارائه دهید، فرض کنید می خواهم
2725
01:46:49,199 –> 01:46:51,679
یک گره 9 ایجاد کنید که فقط می توانم آن را ارائه کنم
2726
01:46:51,679 –> 01:46:54,000
داده 9 و من یک سازنده ایجاد می کنم
2727
01:46:54,000 –> 01:46:56,400
برای ساختن این شی هر زمان که ما
2728
01:46:56,400 –> 01:46:58,400
یک شی بسازید که ما می دانیم که هست
2729
01:46:58,400 –> 01:47:02,239
در واقع در حافظه اصلی ذخیره می شود
2730
01:47:02,239 –> 01:47:05,199
بنابراین هر زمان که هر شیء از این را ایجاد کنیم
2731
01:47:05,199 –> 01:47:06,880
کلاس گره که ما آن را خواهیم دید
2732
01:47:06,880 –> 01:47:09,280
آن را در پایتون که ذخیره شده است برنامه ریزی می کند
2733
01:47:09,280 –> 01:47:10,960
داخل حافظه
2734
01:47:10,960 –> 01:47:14,159
اکنون پس از فراخوانی نه ما یک an خواهیم داشت
2735
01:47:14,159 –> 01:47:17,040
شی که دارای داده های نه و دو است
2736
01:47:17,040 –> 01:47:18,880
ارجاعات پوچ
2737
01:47:18,880 –> 01:47:21,280
حالا فرض کنید می خواهیم 10 15 را وارد کنیم
2738
01:47:21,280 –> 01:47:24,400
و 13 پس فرض کنید 10 را درج کنم
2739
01:47:24,400 –> 01:47:26,480
اینجا
2740
01:47:26,480 –> 01:47:28,880
من 15 را در اینجا درج می کنم
2741
01:47:28,880 –> 01:47:33,360
و فرض کنید من 13 را در اینجا درج خواهم کرد
2742
01:47:33,440 –> 01:47:35,520
تمام نقطه تمام گره هایی که ما می شناسیم این کار را انجام خواهند داد
2743
01:47:35,520 –> 01:47:38,480
دارای دو اشاره گر هستند که به آنها اشاره می کنند
2744
01:47:38,480 –> 01:47:40,880
در حال حاضر null است زیرا ما داده های بیشتری نداریم
2745
01:47:40,880 –> 01:47:43,440
برای درج داده های درختی باینری
2746
01:47:43,440 –> 01:47:44,800
ساختار
2747
01:47:44,800 –> 01:47:46,560
همه اینها پوچ خواهند بود
2748
01:47:46,560 –> 01:47:49,560
منابع
2749
01:47:52,320 –> 01:47:54,639
بنابراین در اینجا من فقط از یک نماد تهی استفاده می کنم
2750
01:47:54,639 –> 01:47:57,520
نشان می دهد که اینها مراجع صفر هستند
2751
01:47:57,520 –> 01:47:59,520
حالا بیایید یک نکته مهم را درک کنیم
2752
01:47:59,520 –> 01:48:02,880
مفهومی که همان چیزی است که هست
2753
01:48:02,880 –> 01:48:06,159
گره های برگ بنابراین در اینجا می توانید یک برگ را ببینید
2754
01:48:06,159 –> 01:48:08,239
گره گرهی است که دارای سمت چپ و است
2755
01:48:08,239 –> 01:48:09,360
حق
2756
01:48:09,360 –> 01:48:11,520
مراجع و به عنوان پوچ
2757
01:48:11,520 –> 01:48:14,880
بنابراین 15 یک گره برگ در داخل این است
2758
01:48:14,880 –> 01:48:17,360
ساختار
2759
01:48:17,360 –> 01:48:19,440
و به همین ترتیب 10
2760
01:48:19,440 –> 01:48:22,560
و 13 نیز گره های برگ هستند
2761
01:48:22,560 –> 01:48:24,880
چون چپ و راست هم دارند
2762
01:48:24,880 –> 01:48:27,840
اشاره گرها به مقادیر تهی اشاره می کنند
2763
01:48:27,840 –> 01:48:30,480
همه این داده ها که 13 و
2764
01:48:30,480 –> 01:48:32,880
10 همه آنها گره های برگ هستند
2765
01:48:32,880 –> 01:48:35,119
حالا بیایید به موضوع بسیار مهم بپردازیم
2766
01:48:35,119 –> 01:48:36,480
بخش
2767
01:48:36,480 –> 01:48:39,440
که ارتفاع و عمق آن است
2768
01:48:39,440 –> 01:48:41,760
درخت
2769
01:48:41,760 –> 01:48:43,840
ارتفاع و عمق درخت بسیار است
2770
01:48:43,840 –> 01:48:46,239
مهم است زیرا به ما کمک خواهد کرد
2771
01:48:46,239 –> 01:48:48,639
پیچیدگی زمانی را ارزیابی کنید
2772
01:48:48,639 –> 01:48:51,280
عملیات های مختلف در یک درخت باینری بنابراین
2773
01:48:51,280 –> 01:48:53,119
بیایید فرض کنیم
2774
01:48:53,119 –> 01:48:55,119
بیایید ابتدا به موضوعی که هست برسیم
2775
01:48:55,119 –> 01:48:58,480
ارتفاع درخت
2776
01:48:59,040 –> 01:49:02,400
ارتفاع به تعداد محاسبه می شود
2777
01:49:02,400 –> 01:49:05,840
لبه هایی که می رود
2778
01:49:06,239 –> 01:49:10,040
از گره ریشه
2779
01:49:14,719 –> 01:49:18,719
تعداد لبه ها از گره ریشه
2780
01:49:18,719 –> 01:49:22,639
به گره ای با طولانی ترین مسیر
2781
01:49:22,639 –> 01:49:25,280
به گره با
2782
01:49:25,280 –> 01:49:28,840
طولانی ترین مسیر
2783
01:49:29,360 –> 01:49:31,520
بنابراین در اینجا می توانیم طولانی ترین مسیر را ببینیم
2784
01:49:31,520 –> 01:49:35,679
از 5 تا 4 و سپس 9 و سپس 13 است.
2785
01:49:35,679 –> 01:49:38,719
بنابراین از ریشه تا 13 عدد را محاسبه می کنیم
2786
01:49:38,719 –> 01:49:40,159
تعداد لبه ها
2787
01:49:40,159 –> 01:49:42,400
که یکی است
2788
01:49:42,400 –> 01:49:44,639
از اینجا به اینجا
2789
01:49:44,639 –> 01:49:45,840
و سپس
2790
01:49:45,840 –> 01:49:46,880
دو
2791
01:49:46,880 –> 01:49:48,159
و سپس سه
2792
01:49:48,159 –> 01:49:50,719
بنابراین سه لبه از نت ریشه وجود دارد
2793
01:49:50,719 –> 01:49:52,960
به طولانی ترین مسیر بنابراین ارتفاع از
2794
01:49:52,960 –> 01:49:54,639
این درخت دوتایی
2795
01:49:54,639 –> 01:49:57,840
برابر با سه است
2796
01:50:00,800 –> 01:50:02,880
حالا بیایید به یک اصطلاح دیگر که است
2797
01:50:02,880 –> 01:50:06,719
همچنین به عنوان سطح درخت باینری شناخته می شود
2798
01:50:06,719 –> 01:50:10,000
سطح از صفر شروع می شود بنابراین در سطح 0 ما
2799
01:50:10,000 –> 01:50:13,440
گره 5 را در سطح 1 داشته باشید
2800
01:50:13,440 –> 01:50:14,880
ما داریم
2801
01:50:14,880 –> 01:50:20,159
گره های 4 و 6 در سطح 2 گره داریم
2802
01:50:20,159 –> 01:50:22,320
9 10 و
2803
01:50:22,320 –> 01:50:27,599
15 و سطح 3 دارای 13 است.
2804
01:50:28,239 –> 01:50:31,360
بنابراین این سطح 3 خواهد بود.
2805
01:50:31,360 –> 01:50:33,280
همانطور که در اینجا می بینیم
2806
01:50:33,280 –> 01:50:35,199
اگر بخواهیم تعداد آنها را دریابیم
2807
01:50:35,199 –> 01:50:38,719
گره های داخل یک سطح که فقط می توانیم 2 انجام دهیم
2808
01:50:38,719 –> 01:50:41,119
سطحی که 2 است را به توان رساند
2809
01:50:41,119 –> 01:50:43,679
به قدرت ل
2810
01:50:43,679 –> 01:50:45,840
بنابراین در اینجا 2 به توان 0 افزایش یافته است
2811
01:50:45,840 –> 01:50:48,639
به ما 1 2 را به توان 1 می دهید
2812
01:50:48,639 –> 01:50:52,400
برابر 2 باشد بنابراین دو گره وجود دارد
2813
01:50:52,400 –> 01:50:54,880
تلاش ارتفاع این درخت دوتایی است
2814
01:50:54,880 –> 01:50:56,239
سه
2815
01:50:56,239 –> 01:50:58,480
حالا بیایید در نظر بگیریم که چیست
2816
01:50:58,480 –> 01:51:00,080
یک درخت فرعی
2817
01:51:00,080 –> 01:51:02,880
زیر درخت بخشی از درخت است
2818
01:51:02,880 –> 01:51:05,360
که در واقع تمام قسمت نیست اما
2819
01:51:05,360 –> 01:51:09,040
این فقط بخش کوچکتری از درخت است
2820
01:51:09,040 –> 01:51:12,800
بنابراین در اینجا می توانیم فرض کنیم که این
2821
01:51:12,800 –> 01:51:15,360
یکی از زیر درختان این باینری است
2822
01:51:15,360 –> 01:51:16,880
ساختار داده ها
2823
01:51:16,880 –> 01:51:19,599
ما همچنین می توانیم این یکی را به عنوان یک کل در نظر بگیریم
2824
01:51:19,599 –> 01:51:21,040
زیر درخت
2825
01:51:21,040 –> 01:51:23,679
حتی می توانیم یک گره را به عنوان یک در نظر بگیریم
2826
01:51:23,679 –> 01:51:25,119
زیر درخت
2827
01:51:25,119 –> 01:51:27,199
بنابراین این درختان فرعی احتمالی هستند
2828
01:51:27,199 –> 01:51:28,719
داخل این
2829
01:51:28,719 –> 01:51:31,280
ساختار داده درختی باینری
2830
01:51:31,280 –> 01:51:33,280
حالا بیایید ببینیم چگونه می توانیم محاسبه کنیم
2831
01:51:33,280 –> 01:51:34,400
ارتفاع
2832
01:51:34,400 –> 01:51:36,880
از یک زیردرخت خاص، بنابراین بیایید بگوییم i
2833
01:51:36,880 –> 01:51:39,040
می خواهید ارتفاع این را محاسبه کنید
2834
01:51:39,040 –> 01:51:43,599
زیردرخت که 4 9 10 و 13 است.
2835
01:51:43,599 –> 01:51:45,599
بنابراین می خواهیم ارتفاع آن را دریابیم
2836
01:51:45,599 –> 01:51:47,920
این درخت فرعی ما همان را اعمال خواهیم کرد
2837
01:51:47,920 –> 01:51:49,599
مفهومی که ما در آن به کار می بردیم
2838
01:51:49,599 –> 01:51:51,679
ارتفاع کل درخت دوتایی
2839
01:51:51,679 –> 01:51:53,599
ما این را به عنوان یک باینری کامل در نظر خواهیم گرفت
2840
01:51:53,599 –> 01:51:55,040
درخت پس ما خواهیم کرد
2841
01:51:55,040 –> 01:51:56,320
از … شروع کنید
2842
01:51:56,320 –> 01:51:59,360
ریشه این زیردرخت که 4 و است
2843
01:51:59,360 –> 01:52:01,679
سپس به طولانی ترین مسیر حرکت خواهیم کرد
2844
01:52:01,679 –> 01:52:03,119
که 13 است
2845
01:52:03,119 –> 01:52:05,119
بنابراین ارتفاع این درخت برابر خواهد بود
2846
01:52:05,119 –> 01:52:06,800
به 2.
2847
01:52:06,800 –> 01:52:08,960
حالا بیایید به یک موضوع مهم دیگر برویم
2848
01:52:08,960 –> 01:52:11,760
اصطلاحی که به عنوان عمق از
2849
01:52:11,760 –> 01:52:13,679
درخت دوتایی
2850
01:52:13,679 –> 01:52:16,800
عمق باینری به صورت تعریف شده است
2851
01:52:16,800 –> 01:52:18,480
تعداد لبه ها
2852
01:52:18,480 –> 01:52:21,440
از گره ریشه به گره ای که ما
2853
01:52:21,440 –> 01:52:24,239
مایل به محاسبه عمق
2854
01:52:24,239 –> 01:52:26,880
حالا بیایید بگوییم من می خواهم محاسبه کنم
2855
01:52:26,880 –> 01:52:28,320
عمق از
2856
01:52:28,320 –> 01:52:30,480
6.
2857
01:52:30,480 –> 01:52:32,960
یا بیایید بگوییم اینجا می خواهم محاسبه کنم
2858
01:52:32,960 –> 01:52:35,760
عمق چهار چقدر است
2859
01:52:35,760 –> 01:52:37,760
بنابراین از گره ریشه تا چهار داریم
2860
01:52:37,760 –> 01:52:41,119
فقط یک لبه تا عمق این
2861
01:52:41,119 –> 01:52:43,360
گره چهار خواهد بود
2862
01:52:43,360 –> 01:52:45,920
مقدار 1 خواهد بود
2863
01:52:45,920 –> 01:52:47,840
تعداد لبه ها از گره ریشه تا
2864
01:52:47,840 –> 01:52:50,800
گره ای که می خواهیم آن را محاسبه کنیم
2865
01:52:50,800 –> 01:52:52,320
عمق برای
2866
01:52:52,320 –> 01:52:54,159
سردرگمی بزرگی بین
2867
01:52:54,159 –> 01:52:56,000
ارتفاع و عمق یک درخت پس من می خواهم
2868
01:52:56,000 –> 01:52:57,679
دوست دارم آن را پاک کنم
2869
01:52:57,679 –> 01:52:59,840
ارتفاع درخت در واقع تعداد است
2870
01:52:59,840 –> 01:53:02,719
لبه ها از گره ریشه تا آخرین
2871
01:53:02,719 –> 01:53:04,880
گره طولانی ترین مسیر
2872
01:53:04,880 –> 01:53:07,679
در حالی که عمق عدد واقعی است
2873
01:53:07,679 –> 01:53:09,760
از لبه ها از
2874
01:53:09,760 –> 01:53:10,800
از
2875
01:53:10,800 –> 01:53:13,840
گره ریشه درخت به آن گره است
2876
01:53:13,840 –> 01:53:15,760
به این ترتیب می توانیم عمق را محاسبه کنیم
2877
01:53:15,760 –> 01:53:18,320
درخت و ارتفاع درخت
2878
01:53:18,320 –> 01:53:21,040
حالا بیایید نگاهی به چگونگی این درخت بیندازیم
2879
01:53:21,040 –> 01:53:23,360
قرار است در داخل ذخیره شود
2880
01:53:23,360 –> 01:53:26,360
غشاء
2881
01:53:26,560 –> 01:53:28,639
همانطور که همه ما می دانیم که همه داده ها هستند
2882
01:53:28,639 –> 01:53:32,560
قرار است در حافظه ذخیره شود
2883
01:53:39,119 –> 01:53:41,119
بنابراین اولین چیزی که می خواهم نقاشی کنم
2884
01:53:41,119 –> 01:53:41,840
آ
2885
01:53:41,840 –> 01:53:45,199
ساختار حافظه در اینجا
2886
01:53:45,199 –> 01:53:47,520
و ما می دانیم که حافظه به تقسیم می شود
2887
01:53:47,520 –> 01:53:50,239
چندین بلوک پیوسته
2888
01:53:50,239 –> 01:53:53,760
که می تواند برخی از داده ها را ذخیره کند
2889
01:53:53,760 –> 01:53:56,480
فرض کنید هر یک از اینها می تواند یکی را ذخیره کند
2890
01:53:56,480 –> 01:53:59,199
بایت داده
2891
01:53:59,199 –> 01:54:01,920
ما می دانیم که حافظه در واقع است
2892
01:54:01,920 –> 01:54:03,920
دارای مکان های حافظه است که هستند
2893
01:54:03,920 –> 01:54:05,679
در طبیعت مستمر
2894
01:54:05,679 –> 01:54:08,159
بنابراین برای مثال من فقط آن را فرض می کنم
2895
01:54:08,159 –> 01:54:11,679
این حافظه از 1 0 0 1 شروع می شود و می رود
2896
01:54:11,679 –> 01:54:16,480
1 0 0 2 1 0 0 3 و غیره
2897
01:54:16,880 –> 01:54:19,280
اکنون می توانیم در اینجا ببینیم که درخت دودویی است
2898
01:54:19,280 –> 01:54:21,760
در واقع دو شاخه دارد اما اینطور است
2899
01:54:21,760 –> 01:54:23,440
نه به روشی که در داخل ذخیره می شود
2900
01:54:23,440 –> 01:54:24,880
حافظه
2901
01:54:24,880 –> 01:54:26,960
قرار است در داخل آن ذخیره شود
2902
01:54:26,960 –> 01:54:29,520
خاطره به شیوه ای متفاوت
2903
01:54:29,520 –> 01:54:32,080
پس فرض کنید ابتدا یک شی ایجاد می کنیم
2904
01:54:32,080 –> 01:54:33,679
از کلاس گره
2905
01:54:33,679 –> 01:54:36,800
با تخصیص 5 که 5 اینچ را اختصاص می دهد
2906
01:54:36,800 –> 01:54:39,520
حافظه اصلی و 2 خواهد بود
2907
01:54:39,520 –> 01:54:41,840
اشاره گر که چپ و راست است
2908
01:54:41,840 –> 01:54:43,679
که در ابتدا به null اشاره می کند
2909
01:54:43,679 –> 01:54:45,679
مرجع
2910
01:54:45,679 –> 01:54:47,840
حالا فرض کنید می خواهیم وارد شویم
2911
01:54:47,840 –> 01:54:50,320
یک 4 در داخل درخت دودویی پس اجازه دهید
2912
01:54:50,320 –> 01:54:51,119
گفتن
2913
01:54:51,119 –> 01:54:53,440
4 در اینجا اختصاص داده شده است
2914
01:54:53,440 –> 01:54:56,000
اکنون برنامه نویسان کنترلی روی آن ندارند
2915
01:54:56,000 –> 01:54:57,679
جایی که می توانید ذخیره کنید
2916
01:54:57,679 –> 01:54:59,440
یک خاص
2917
01:54:59,440 –> 01:55:01,840
عنصر داخل حافظه به دلیل آن است
2918
01:55:01,840 –> 01:55:05,920
جایی که بلوک md خالی است مشخص نیست
2919
01:55:05,920 –> 01:55:08,400
بنابراین در اینجا بیایید فرض کنیم که 4 خواهد بود
2920
01:55:08,400 –> 01:55:10,960
در این مکان حافظه که
2921
01:55:10,960 –> 01:55:14,159
1 0 0 3 است
2922
01:55:14,320 –> 01:55:17,440
اکنون می دانیم که یک اشاره گر چپ داریم
2923
01:55:17,440 –> 01:55:19,520
کاری که ما می خواهیم انجام دهیم این است
2924
01:55:19,520 –> 01:55:22,159
این اشاره گر سمت چپ به آن اختصاص داده می شود
2925
01:55:22,159 –> 01:55:24,639
این مکان حافظه
2926
01:55:24,639 –> 01:55:27,040
بنابراین این اشاره گر سمت چپ مقدار را نگه می دارد
2927
01:55:27,040 –> 01:55:28,880
از 1 0 0 3
2928
01:55:28,880 –> 01:55:31,520
بگویم که این خواهد بود
2929
01:55:31,520 –> 01:55:34,239
قسمت چپ درخت
2930
01:55:34,239 –> 01:55:36,080
حالا قسمت سمت راست است
2931
01:55:36,080 –> 01:55:40,000
6 بنابراین فرض کنید 6 در اینجا ذخیره می شود
2932
01:55:40,000 –> 01:55:41,760
بنابراین به طور مشابه ما می خواهیم ایجاد کنیم
2933
01:55:41,760 –> 01:55:44,159
اشاره گر دیگری که درست است
2934
01:55:44,159 –> 01:55:46,080
و حق ارزش دارد
2935
01:55:46,080 –> 01:55:48,719
1 0 0 2. ما فقط اینها را فرض می کنیم
2936
01:55:48,719 –> 01:55:51,440
ارزشها اینها مقادیر مطلق نیستند
2937
01:55:51,440 –> 01:55:53,920
ما فقط آنها را فرض می کنیم
2938
01:55:53,920 –> 01:55:56,719
فقط به خاطر توضیح اینکه چگونه یک
2939
01:55:56,719 –> 01:55:58,719
ساختار داده باینری در داخل ذخیره می شود
2940
01:55:58,719 –> 01:56:01,679
حافظه حافظه یک داده خطی است
2941
01:56:01,679 –> 01:56:04,639
ساختار اما می توانیم از ارجاعات استفاده کنیم
2942
01:56:04,639 –> 01:56:08,239
در واقع این ساختار سلسله مراتبی را دریافت کنید
2943
01:56:08,239 –> 01:56:10,560
حالا بیایید به موضوع بسیار
2944
01:56:10,560 –> 01:56:13,040
موضوع مهمی که انواع مختلفی دارد
2945
01:56:13,040 –> 01:56:16,320
از درختان دوتایی
2946
01:56:16,400 –> 01:56:19,119
اولین نوع باینری به نام the شناخته می شود
2947
01:56:19,119 –> 01:56:20,880
منحط
2948
01:56:20,880 –> 01:56:25,159
یا درخت پاتولوژیک
2949
01:56:29,599 –> 01:56:32,320
درخت منحط یا آسیب شناسی الف است
2950
01:56:32,320 –> 01:56:36,080
درختی که در واقع می توان از آن استفاده کرد می توان استفاده کرد
2951
01:56:36,080 –> 01:56:38,400
به عنوان یک لیست پیوندی پس بیایید آن را درج کنیم
2952
01:56:38,400 –> 01:56:40,960
عناصر همین عناصر در داخل a
2953
01:56:40,960 –> 01:56:42,480
درخت منحط
2954
01:56:42,480 –> 01:56:45,599
بنابراین ما اولین عنصر را در اینجا داریم 5
2955
01:56:45,599 –> 01:56:48,159
سپس 4 را درج می کنیم
2956
01:56:48,159 –> 01:56:50,960
و قسمت سمت راست تهی است
2957
01:56:50,960 –> 01:56:53,199
قسمت سمت راست هر گره برابر خواهد بود
2958
01:56:53,199 –> 01:56:56,000
null شود و ما فقط می توانیم آن را در قسمت وارد کنیم
2959
01:56:56,000 –> 01:56:58,880
قسمت سمت چپ پس از 4 6 آن را وارد می کنیم
2960
01:56:58,880 –> 01:57:00,159
اینجا
2961
01:57:00,159 –> 01:57:02,639
و سپس 9 در اینجا درج می شود
2962
01:57:02,639 –> 01:57:07,280
و سپس به طور مشابه 10 15 و غیره
2963
01:57:07,280 –> 01:57:09,360
ما همچنین می توانیم برعکس انجام دهیم که به این معنی است
2964
01:57:09,360 –> 01:57:11,840
که می توانیم عناصر را نیز در آن درج کنیم
2965
01:57:11,840 –> 01:57:14,080
قسمت راست در آن صورت سمت چپ
2966
01:57:14,080 –> 01:57:16,400
مراجع باطل خواهند شد
2967
01:57:16,400 –> 01:57:17,679
اکنون می توانید ببینید
2968
01:57:17,679 –> 01:57:19,679
ارتفاع این نوع خاص از
2969
01:57:19,679 –> 01:57:22,159
درخت پیچیدگی زمانی می دهد
2970
01:57:22,159 –> 01:57:24,719
از بزرگ o از n زیرا می توانید آن را ببینید
2971
01:57:24,719 –> 01:57:26,719
در واقع تجسم الف است
2972
01:57:26,719 –> 01:57:30,400
لیست پیوندی به عنوان یک درخت باینری
2973
01:57:30,480 –> 01:57:32,639
باینری بعدی که بسیار مهم است
2974
01:57:32,639 –> 01:57:35,040
درخت دودویی و دارای تعداد زیادی از
2975
01:57:35,040 –> 01:57:37,360
کاربردها در ساختار داده شناخته شده است
2976
01:57:37,360 –> 01:57:41,199
به عنوان یک درخت دوتایی متعادل
2977
01:57:45,040 –> 01:57:49,040
یک درخت باینری متعادل یک تفاوت دارد
2978
01:57:49,040 –> 01:57:52,440
از ارتفاع
2979
01:57:52,639 –> 01:57:54,960
از سمت چپ
2980
01:57:54,960 –> 01:57:57,280
و زیردرخت سمت راست
2981
01:57:57,280 –> 01:58:00,639
حداکثر یک
2982
01:58:01,599 –> 01:58:04,400
این محدودیت باعث می شود هر بن یک
2983
01:58:04,400 –> 01:58:07,119
درخت دودویی به عنوان یک باینری متعادل
2984
01:58:07,119 –> 01:58:09,440
بنابراین هر زمان که یک درخت باینری به ما داده شود
2985
01:58:09,440 –> 01:58:12,159
ما سعی می کنیم مطمئن شویم که یک است
2986
01:58:12,159 –> 01:58:14,960
درخت باینری متعادل است زیرا این کار را انجام خواهد داد
2987
01:58:14,960 –> 01:58:18,000
پیچیدگی زمانی بزرگ o را به ما بدهید
2988
01:58:18,000 –> 01:58:20,400
پایه log 2 n
2989
01:58:20,400 –> 01:58:22,639
و دلیل آن این است که الف
2990
01:58:22,639 –> 01:58:24,480
درخت دوتایی متعادل
2991
01:58:24,480 –> 01:58:26,639
دارای ارتفاعی برابر با
2992
01:58:26,639 –> 01:58:29,199
پایه ورود به n
2993
01:58:29,199 –> 01:58:31,280
به همین دلیل پیچیدگی زمانی خواهد بود
2994
01:58:31,280 –> 01:58:32,400
مساوی با
2995
01:58:32,400 –> 01:58:35,119
پایه را به n وارد کنید، بنابراین حالا بیایید ببینیم که چگونه a
2996
01:58:35,119 –> 01:58:37,760
درخت دودویی متعادل به نظر می رسد
2997
01:58:37,760 –> 01:58:40,400
در این مثال بیایید ببینیم که آیا این
2998
01:58:40,400 –> 01:58:41,760
باینری است
2999
01:58:41,760 –> 01:58:44,239
درخت یا نه
3000
01:58:44,239 –> 01:58:46,000
پس این یک درخت باینری است بیایید ببینیم
3001
01:58:46,000 –> 01:58:48,639
آیا در اینجا متعادل است یا نه
3002
01:58:48,639 –> 01:58:49,840
میتوانی ببینی
3003
01:58:49,840 –> 01:58:50,960
من دارم
3004
01:58:50,960 –> 01:58:53,280
این گره اینجا
3005
01:58:53,280 –> 01:58:55,280
ارتفاع قسمت چپ
3006
01:58:55,280 –> 01:58:58,639
درخت فرعی برابر با 2 است.
3007
01:58:58,639 –> 01:59:03,360
بنابراین ارتفاع این درخت برابر با 2 است.
3008
01:59:03,360 –> 01:59:05,679
بیایید قسمت سمت راست را در نظر بگیریم
3009
01:59:05,679 –> 01:59:08,560
قسمت دارای ارتفاعی است که در اینجا می توانیم ببینیم
3010
01:59:08,560 –> 01:59:11,520
از اینجا تا اینجا داریم ارتفاع است
3011
01:59:11,520 –> 01:59:12,719
مساوی با
3012
01:59:12,719 –> 01:59:15,040
1.
3013
01:59:15,360 –> 01:59:18,880
بنابراین ارتفاع این برابر با 1 خواهد بود
3014
01:59:18,880 –> 01:59:22,080
بنابراین نتیجه در واقع برابر با 2 است
3015
01:59:22,080 –> 01:59:24,880
منهای 1 که برابر با 1 است.
3016
01:59:24,880 –> 01:59:27,360
تفاوت باید حداکثر 1 باشد که
3017
01:59:27,360 –> 01:59:30,560
به این معنی که نمی تواند از یک تجاوز کند
3018
01:59:30,560 –> 01:59:32,800
در اینجا می توانیم ببینیم که تجاوز نمی کند
3019
01:59:32,800 –> 01:59:36,400
یکی پس این یک درخت باینری متعادل است
3020
01:59:36,400 –> 01:59:38,960
چنین نوع درختی می تواند به ما زمان بدهد
3021
01:59:38,960 –> 01:59:40,960
پیچیدگی از
3022
01:59:40,960 –> 01:59:44,920
پایه ورود به n
3023
01:59:45,199 –> 01:59:47,199
این نرم افزار
3024
01:59:47,199 –> 01:59:50,080
در واقع بسیار مفید است زیرا در صورت
3025
01:59:50,080 –> 01:59:51,040
از
3026
01:59:51,040 –> 01:59:53,599
d ایجاد یا لیست پیوندی که داریم
3027
01:59:53,599 –> 01:59:56,719
پیچیدگی زمانی o بزرگ از n که است
3028
01:59:56,719 –> 01:59:58,880
بیشتر از پیچیدگی زمانی لاگ
3029
01:59:58,880 –> 02:00:02,080
پایه 2n بنابراین ما یک باینری متعادل را ترجیح می دهیم
3030
02:00:02,080 –> 02:00:03,440
درخت
3031
02:00:03,440 –> 02:00:05,360
تغییرات خاصی از a وجود دارد
3032
02:00:05,360 –> 02:00:07,440
درخت دوتایی متعادل که ما آن را مطالعه خواهیم کرد
3033
02:00:07,440 –> 02:00:09,599
در آموزش های بعدی
3034
02:00:09,599 –> 02:00:13,760
که درختان سیاه قرمز است
3035
02:00:13,760 –> 02:00:16,560
سپس درختان avl
3036
02:00:16,560 –> 02:00:18,400
بنابراین ما آنها را به طور مفصل در ادامه مطالعه خواهیم کرد
3037
02:00:18,400 –> 02:00:20,800
آموزش های آینده این دوره
3038
02:00:20,800 –> 02:00:22,800
حالا بیایید سوم و سوم را بفهمیم
3039
02:00:22,800 –> 02:00:25,360
بخش بسیار مهمی است که کامل است
3040
02:00:25,360 –> 02:00:28,080
درخت دوتایی
3041
02:00:28,080 –> 02:00:30,159
یک درخت دوتایی کامل
3042
02:00:30,159 –> 02:00:32,239
صفر دارد
3043
02:00:32,239 –> 02:00:33,280
یا
3044
02:00:33,280 –> 02:00:36,080
دو بچه
3045
02:00:37,119 –> 02:00:40,760
در تمام گره ها
3046
02:00:42,480 –> 02:00:45,280
نمونه ای از یک درخت دودویی کامل
3047
02:00:45,280 –> 02:00:47,360
چیزی شبیه این باشد
3048
02:00:47,360 –> 02:00:50,639
این نمونه ای از یک باینری کامل است
3049
02:00:50,639 –> 02:00:52,960
این نیز نمونه ای از کامل است
3050
02:00:52,960 –> 02:00:54,400
درخت دوتایی
3051
02:00:54,400 –> 02:00:57,040
من می توانم این حق را بیشتر بسط دهم که می توانیم داشته باشیم
3052
02:00:57,040 –> 02:00:59,599
دو یا صفر بچه آن نیز کامل است
3053
02:00:59,599 –> 02:01:01,119
درخت دوتایی
3054
02:01:01,119 –> 02:01:03,679
این یکی نیز باینری کامل است و غیره
3055
02:01:03,679 –> 02:01:05,599
بر
3056
02:01:05,599 –> 02:01:08,800
حالا بیایید پیاده سازی را انجام دهیم
3057
02:01:08,800 –> 02:01:11,440
درخت دودویی در آموزش بعدی خواهیم گفت
3058
02:01:11,440 –> 02:01:13,679
ابتدا یک گره کلاس ایجاد کنید
3059
02:01:13,679 –> 02:01:15,760
و کاری که ما انجام خواهیم داد این است که a ایجاد خواهیم کرد
3060
02:01:15,760 –> 02:01:18,159
درخت باینری با مرجع ریشه
3061
02:01:18,159 –> 02:01:20,480
در ابتدا با اشاره به null و سپس ما
3062
02:01:20,480 –> 02:01:22,960
به درج این گره ها ادامه خواهد داد
3063
02:01:22,960 –> 02:01:24,880
یک درخت دودویی تشکیل دهید
3064
02:01:24,880 –> 02:01:27,199
قبل از اینکه به سراغ آن برویم که ابتدا به آن نیاز داریم
3065
02:01:27,199 –> 02:01:29,280
برای درک یک تنوع بسیار خوب از
3066
02:01:29,280 –> 02:01:32,480
باینری که به جستجوی باینری معروف است
3067
02:01:32,480 –> 02:01:34,800
درخت
3068
02:01:35,679 –> 02:01:38,320
درخت جستجوی دودویی بهینه شده است
3069
02:01:38,320 –> 02:01:40,560
عملیات جستجو
3070
02:01:40,560 –> 02:01:42,400
بنابراین اگر می خواهید یک مورد خاص را جستجو کنید
3071
02:01:42,400 –> 02:01:44,800
عنصری که می خواهیم مطمئن شویم
3072
02:01:44,800 –> 02:01:47,760
که قسمت چپ درخت خواهد داشت
3073
02:01:47,760 –> 02:01:48,719
را
3074
02:01:48,719 –> 02:01:52,239
ارزش گره
3075
02:01:54,000 –> 02:01:55,440
باید باشد
3076
02:01:55,440 –> 02:01:57,199
بزرگتر از
3077
02:01:57,199 –> 02:02:00,080
یا برابر با گره ریشه است
3078
02:02:00,080 –> 02:02:03,520
یا می توانیم بگوییم گره والد
3079
02:02:03,520 –> 02:02:06,560
و برای قسمت درست
3080
02:02:06,560 –> 02:02:09,920
ارزش گره
3081
02:02:10,000 –> 02:02:12,880
کمتر یا مساوی خواهد بود
3082
02:02:12,880 –> 02:02:15,840
ریشه یا گره والد
3083
02:02:15,840 –> 02:02:18,320
ما حتی می توانیم برعکس این را انجام دهیم
3084
02:02:18,320 –> 02:02:20,639
درخت جستجوی دودویی را بدست آورید
3085
02:02:20,639 –> 02:02:22,639
درخت جستجوی دودویی با اینها
3086
02:02:22,639 –> 02:02:25,280
محدودیت ها باعث عملیات جستجو می شود
3087
02:02:25,280 –> 02:02:26,800
بهینه شده
3088
02:02:26,800 –> 02:02:29,360
بیایید ببینیم چگونه می توانیم ببینیم چگونه می توانیم
3089
02:02:29,360 –> 02:02:31,599
این داده ها را در داخل یک باینری قرار دهید
3090
02:02:31,599 –> 02:02:33,040
درخت جستجو
3091
02:02:33,040 –> 02:02:35,280
بنابراین ابتدا 5 را درج می کنیم
3092
02:02:35,280 –> 02:02:37,599
به عنوان عنصر ریشه
3093
02:02:37,599 –> 02:02:39,119
پس اینجا
3094
02:02:39,119 –> 02:02:41,360
من 5 را درج خواهم کرد
3095
02:02:41,360 –> 02:02:44,800
سپس ما 4 داریم در اینجا 4 دارای یک مقدار است
3096
02:02:44,800 –> 02:02:47,599
کمتر از 5 و می گوییم که اگر مقدار
3097
02:02:47,599 –> 02:02:50,159
گره کمتر از والد است
3098
02:02:50,159 –> 02:02:52,320
به سمت راست می رود
3099
02:02:52,320 –> 02:02:55,679
درخت بنابراین 4 به قسمت سمت راست می رود
3100
02:02:55,679 –> 02:02:57,440
سپس 6 داریم
3101
02:02:57,440 –> 02:02:59,440
6 بزرگتر از 5 است بنابراین 6 خواهد بود
3102
02:02:59,440 –> 02:03:01,360
در اینجا درج شده است
3103
02:03:01,360 –> 02:03:02,960
سپس اجازه دهید عنصر بعدی را در نظر بگیریم
3104
02:03:02,960 –> 02:03:05,840
که 9 9 است بزرگتر از 5 و است
3105
02:03:05,840 –> 02:03:07,599
همچنین بزرگتر از 6
3106
02:03:07,599 –> 02:03:09,679
بنابراین اگر بزرگتر از 6 باشد می دانیم
3107
02:03:09,679 –> 02:03:11,760
قرار است به
3108
02:03:11,760 –> 02:03:14,239
قسمت چپ درخت
3109
02:03:14,239 –> 02:03:15,840
سپس ما 10 داریم
3110
02:03:15,840 –> 02:03:19,040
حالا 10 بزرگتر از 9 است، پس دوباره اینطور است
3111
02:03:19,040 –> 02:03:21,199
رفتن به
3112
02:03:21,199 –> 02:03:24,320
قسمت چپ این درخت
3113
02:03:24,320 –> 02:03:27,520
اکنون 15 نیز به سمت چپ می رود بنابراین
3114
02:03:27,520 –> 02:03:29,360
به این ترتیب ما می خواهیم آن را وارد کنیم
3115
02:03:29,360 –> 02:03:32,080
عناصر در درخت جستجوی دودویی بنابراین در
3116
02:03:32,080 –> 02:03:34,480
آموزش بعدی زمانی که ما سعی خواهیم کرد
3117
02:03:34,480 –> 02:03:37,119
گره هایی را که می خواهیم تشکیل دهیم وارد کنید
3118
02:03:37,119 –> 02:03:38,800
این نوع ما قصد داریم از اینها استفاده کنیم
3119
02:03:38,800 –> 02:03:41,360
محدودیت برای درج گره در
3120
02:03:41,360 –> 02:03:42,639
درخت دوتایی
3121
02:03:42,639 –> 02:03:45,119
و این اراده در واقع یک است
3122
02:03:45,119 –> 02:03:46,880
جستجوی بهینه شده زیرا می توانید ببینید
3123
02:03:46,880 –> 02:03:48,960
اگر بخواهم سرچ کنم اینجا
3124
02:03:48,960 –> 02:03:50,639
9
3125
02:03:50,639 –> 02:03:53,679
ابتدا به گره ریشه می روم
3126
02:03:53,679 –> 02:03:57,040
من می توانم ارزیابی کنم که آیا 9 کمتر از آن است یا خیر
3127
02:03:57,040 –> 02:03:58,320
5 یا نه
3128
02:03:58,320 –> 02:04:00,639
اگر بزرگتر از 5 باشد می دانم که انجام می دهم
3129
02:04:00,639 –> 02:04:02,560
نیازی به پیمودن همه اینها نیست
3130
02:04:02,560 –> 02:04:04,719
عناصری که در داخل آن وجود خواهند داشت
3131
02:04:04,719 –> 02:04:05,760
این درخت
3132
02:04:05,760 –> 02:04:07,760
ما این کار را دوباره و دوباره انجام خواهیم داد
3133
02:04:07,760 –> 02:04:10,239
به طور بازگشتی نادیده گرفتن شاخه هایی که
3134
02:04:10,239 –> 02:04:12,400
ما نیاز نداریم
3135
02:04:12,400 –> 02:04:13,280
پیدا کردن
3136
02:04:13,280 –> 02:04:15,119
یا از طریق آن عبور کنید
3137
02:04:15,119 –> 02:04:18,239
که این جستجوی بهینه شده را چنین می کند
3138
02:04:18,239 –> 02:04:20,079
اساساً در این آموزش می رویم
3139
02:04:20,079 –> 02:04:21,599
برای اجرا
3140
02:04:21,599 –> 02:04:24,320
دو وظیفه مهم ایجاد یک
3141
02:04:24,320 –> 02:04:27,440
گره داخل یک درخت باینری حالا اجازه دهید
3142
02:04:27,440 –> 02:04:30,079
به مرحله اول بروید
3143
02:04:30,079 –> 02:04:32,639
ایجاد یک درخت دودویی که I’ve است
3144
02:04:32,639 –> 02:04:34,480
قبلاً به شما گفته بود که هر داده
3145
02:04:34,480 –> 02:04:35,520
ساختار
3146
02:04:35,520 –> 02:04:39,119
دارای یک واحد اساسی است که ما آن را به عنوان
3147
02:04:39,119 –> 02:04:41,599
یک گره
3148
02:04:41,840 –> 02:04:44,400
در مورد لیست پیوندی، ما یک را ایجاد کردیم
3149
02:04:44,400 –> 02:04:45,440
کلاس
3150
02:04:45,440 –> 02:04:46,320
گره
3151
02:04:46,320 –> 02:04:48,239
که تنها خواهد داشت
3152
02:04:48,239 –> 02:04:50,800
دو عنصر که داده و
3153
02:04:50,800 –> 02:04:53,520
اشاره گر بعدی در داخل یک درخت باینری
3154
02:04:53,520 –> 02:04:56,079
ساختار داده ما می دانیم که هر گره
3155
02:04:56,079 –> 02:04:57,280
شامل
3156
02:04:57,280 –> 02:05:00,079
داده ها و همچنین دو اشاره گر که همان است
3157
02:05:00,079 –> 02:05:02,239
اشاره گر چپ و راست که هستند
3158
02:05:02,239 –> 02:05:04,159
با اشاره به چپ و راست
3159
02:05:04,159 –> 02:05:05,520
زیر درخت
3160
02:05:05,520 –> 02:05:07,280
اولین چیز این است
3161
02:05:07,280 –> 02:05:09,840
ما یک شی از این کلاس ایجاد خواهیم کرد
3162
02:05:09,840 –> 02:05:12,000
گره بنابراین باید a را تعریف کنیم
3163
02:05:12,000 –> 02:05:15,840
سازنده با استفاده از init con init
3164
02:05:15,840 –> 02:05:17,199
تابعی که در واقع همان است
3165
02:05:17,199 –> 02:05:20,480
سازنده و در اینجا یک را پاس می کنیم
3166
02:05:20,480 –> 02:05:23,040
پارامتر با خود ما در حال حاضر
3167
02:05:23,040 –> 02:05:26,320
در مورد اهمیت خود بحث کردند زیرا
3168
02:05:26,320 –> 02:05:28,960
هر زمان که یک شی از یک کلاس ایجاد می کنیم
3169
02:05:28,960 –> 02:05:31,920
این خود در واقع اشاره ای است به
3170
02:05:31,920 –> 02:05:34,639
آن شی خاص
3171
02:05:34,639 –> 02:05:36,880
و ما همچنین داده های را ارسال خواهیم کرد
3172
02:05:36,880 –> 02:05:39,040
گره ای که می خواهیم
3173
02:05:39,040 –> 02:05:41,920
ساخت با استفاده از این سازنده
3174
02:05:41,920 –> 02:05:44,719
در زمان ایجاد شی
3175
02:05:44,719 –> 02:05:47,679
بنابراین در اینجا برای مثال من فقط قصد دارم
3176
02:05:47,679 –> 02:05:49,920
در اینجا یک نظر بنویسید ما می توانیم یک نظر ایجاد کنیم
3177
02:05:49,920 –> 02:05:53,119
شیء این کلاس با استفاده از گره و این
3178
02:05:53,119 –> 02:05:55,840
یک سازنده پیش فرض را فراخوانی می کند اما ما
3179
02:05:55,840 –> 02:05:58,000
می توانید ببینید که سازنده پیش فرض دارد
3180
02:05:58,000 –> 02:06:00,719
داده ها، بنابراین فرض کنید می خواهم 5 را فشار دهم
3181
02:06:00,719 –> 02:06:03,360
در داخل این گره بنابراین داده ها به این صورت است
3182
02:06:03,360 –> 02:06:06,079
مقدار 5 خواهد داشت.
3183
02:06:06,079 –> 02:06:08,320
بنابراین هر بار که ما یک گره ایجاد می کنیم ما هستیم
3184
02:06:08,320 –> 02:06:09,920
علاقه مند نیست
3185
02:06:09,920 –> 02:06:12,400
در نحوه ذخیره آن گره
3186
02:06:12,400 –> 02:06:14,960
در داخل آن حافظه زیرا شی
3187
02:06:14,960 –> 02:06:16,400
خلقت این کار را می کند
3188
02:06:16,400 –> 02:06:17,920
بطور خودکار
3189
02:06:17,920 –> 02:06:20,960
مرحله بعدی تخصیص است
3190
02:06:20,960 –> 02:06:24,239
داده های شی به عنوان داده هایی که
3191
02:06:24,239 –> 02:06:26,480
تصویب شده است
3192
02:06:26,480 –> 02:06:29,040
به سازنده این کلاس
3193
02:06:29,040 –> 02:06:32,400
و سپس ما دو مهم ایجاد می کنیم
3194
02:06:32,400 –> 02:06:33,599
اشاره گرها
3195
02:06:33,599 –> 02:06:36,400
خود نقطه سمت چپ صفر خواهد بود
3196
02:06:36,400 –> 02:06:38,639
اشاره گر زیرا در ابتدا ما فقط هستیم
3197
02:06:38,639 –> 02:06:41,119
تلاش برای ایجاد یک پایه
3198
02:06:41,119 –> 02:06:43,760
گره ای که داده و دو خواهد داشت
3199
02:06:43,760 –> 02:06:46,320
اشاره گرهایی که قرار است خود باشند
3200
02:06:46,320 –> 02:06:50,880
نشانگرهای چپ و خود نقطه راست
3201
02:06:50,880 –> 02:06:52,079
مثل این
3202
02:06:52,079 –> 02:06:54,400
در پایتون از هیچ برای نشان دادن a استفاده نمی کنیم
3203
02:06:54,400 –> 02:06:56,639
مرجع تهی در آینده ما هستیم
3204
02:06:56,639 –> 02:06:58,960
فقط مطمئن می شویم که ما
3205
02:06:58,960 –> 02:07:01,920
دوباره این ارجاعات را به
3206
02:07:01,920 –> 02:07:05,119
گره های دیگر به منظور تشکیل یک درخت
3207
02:07:05,119 –> 02:07:07,760
این اولین قدم ماست حالا بیایید ادامه دهیم
3208
02:07:07,760 –> 02:07:10,400
به دومین مرحله مهم
3209
02:07:10,400 –> 02:07:13,760
که برای ایجاد یک کلاس است
3210
02:07:13,760 –> 02:07:16,000
درخت دوتایی
3211
02:07:16,000 –> 02:07:18,400
این کلاس باینری را ایجاد خواهیم کرد
3212
02:07:18,400 –> 02:07:20,880
شیء این کلاس یک ریشه خواهد داشت
3213
02:07:20,880 –> 02:07:23,199
مرجع در ابتدا به آن اشاره خواهد کرد
3214
02:07:23,199 –> 02:07:25,840
null و همانطور که به درج ادامه خواهیم داد
3215
02:07:25,840 –> 02:07:28,880
عناصر داخل این درخت دوتایی
3216
02:07:28,880 –> 02:07:30,639
ما می خواهیم مطمئن شویم که این
3217
02:07:30,639 –> 02:07:32,159
شی خاص
3218
02:07:32,159 –> 02:07:35,119
در واقع حفظ کل است
3219
02:07:35,119 –> 02:07:37,440
ترتیب تمام گره هایی که آن
3220
02:07:37,440 –> 02:07:39,840
ما قصد داریم با استفاده از اینها ایجاد کنیم
3221
02:07:39,840 –> 02:07:41,840
این گره کلاس
3222
02:07:41,840 –> 02:07:43,040
بنابراین
3223
02:07:43,040 –> 02:07:45,119
به سادگی می خواهم یک کلاس ایجاد کنم
3224
02:07:45,119 –> 02:07:47,679
درخت دوتایی
3225
02:07:47,679 –> 02:07:49,760
این کلاس یک سازنده خواهد داشت بنابراین
3226
02:07:49,760 –> 02:07:51,520
هر زمان که خواهم ساخت
3227
02:07:51,520 –> 02:07:54,719
یک شی از این کلاس
3228
02:07:54,719 –> 02:07:57,199
این سازنده و ما را صدا می کند
3229
02:07:57,199 –> 02:07:59,920
یک پارامتر self را در داخل
3230
02:07:59,920 –> 02:08:01,280
سازنده
3231
02:08:01,280 –> 02:08:03,920
که نشان خواهد داد که این در واقع یک است
3232
02:08:03,920 –> 02:08:06,079
سازنده این توسط برخی نامیده می شود
3233
02:08:06,079 –> 02:08:07,360
هدف – شی
3234
02:08:07,360 –> 02:08:09,840
حالا ما یک روت ایجاد می کنیم
3235
02:08:09,840 –> 02:08:11,119
پارامتر
3236
02:08:11,119 –> 02:08:13,280
ما می دانیم که ریشه نشان دهنده اولین است
3237
02:08:13,280 –> 02:08:15,760
گره درخت باینری بنابراین در باینری ما
3238
02:08:15,760 –> 02:08:18,560
درخت در ابتدا هیچ خواهد بود
3239
02:08:18,560 –> 02:08:22,960
به این معنی که درخت دوتایی ما
3240
02:08:22,960 –> 02:08:25,599
خالی است
3241
02:08:26,239 –> 02:08:28,239
اکنون آنچه باید انجام دهیم این است که باید انجام دهیم
3242
02:08:28,239 –> 02:08:31,440
چند قدم مهم اولین قدم ما هستیم
3243
02:08:31,440 –> 02:08:33,440
ابتدا باید یک شی از این ایجاد کنید
3244
02:08:33,440 –> 02:08:34,800
درخت دوتایی
3245
02:08:34,800 –> 02:08:38,000
من می خواهم یک خط زیر خط bt جدید ایجاد کنم
3246
02:08:38,000 –> 02:08:39,520
به عنوان یک شی
3247
02:08:39,520 –> 02:08:41,199
و اینجا خواهم کرد
3248
02:08:41,199 –> 02:08:44,079
به سادگی درخت دودویی را بنویسید
3249
02:08:44,079 –> 02:08:45,840
و دو براکت دایره ای که خواهد شد
3250
02:08:45,840 –> 02:08:47,599
یک شی ایجاد کنید
3251
02:08:47,599 –> 02:08:48,800
اکنون می توانید ببینید که این کار خواهد شد
3252
02:08:48,800 –> 02:08:50,800
به طور خودکار سازنده را که
3253
02:08:50,800 –> 02:08:53,119
این یکی است که یک ریشه ایجاد می کند
3254
02:08:53,119 –> 02:08:56,480
مرجع خود یعنی این جدید
3255
02:08:56,480 –> 02:09:00,400
شی bt که این یکی است ریشه دارد
3256
02:09:00,400 –> 02:09:02,400
مرجعی که در ابتدا به آن اشاره می کند
3257
02:09:02,400 –> 02:09:05,440
تهی است پس این اهمیت خود است
3258
02:09:05,440 –> 02:09:08,480
در واقع یک مرجع حافظه است
3259
02:09:08,480 –> 02:09:11,760
شیئی که این سازنده را فراخوانی کرده است
3260
02:09:11,760 –> 02:09:14,000
در آن اکنون بیایید ببینیم چگونه می توانیم وارد کنیم
3261
02:09:14,000 –> 02:09:16,560
برخی از داده ها در داخل درخت باینری بنابراین
3262
02:09:16,560 –> 02:09:18,480
ما یک تابع جدید ایجاد خواهیم کرد
3263
02:09:18,480 –> 02:09:21,840
تابع درج باشد
3264
02:09:22,800 –> 02:09:24,800
که من قصد دارم در داخل این تعریف کنم
3265
02:09:24,800 –> 02:09:26,159
درخت دوتایی
3266
02:09:26,159 –> 02:09:28,000
در حال حاضر قبل از حرکت به
3267
02:09:28,000 –> 02:09:30,719
ابتدا باید تابع را وارد کنیم
3268
02:09:30,719 –> 02:09:33,920
درک نحوه انجام درج و
3269
02:09:33,920 –> 02:09:35,599
چه محدودیت هایی وجود دارد
3270
02:09:35,599 –> 02:09:36,800
ضروری
3271
02:09:36,800 –> 02:09:38,719
در حالی که ما در حال انجام درج
3272
02:09:38,719 –> 02:09:42,800
گره های داخل این درخت باینری خالی
3273
02:09:42,800 –> 02:09:45,440
بنابراین در اینجا ابتدا در مرحله یک ما
3274
02:09:45,440 –> 02:09:48,239
قبلاً دیده اند که ما ایجاد کرده ایم
3275
02:09:48,239 –> 02:09:50,400
یک گره کلاس که در واقع ایجاد خواهد کرد
3276
02:09:50,400 –> 02:09:52,400
یک گره با مقداری داده
3277
02:09:52,400 –> 02:09:54,560
و دو اشاره گر که در ابتدا هستند
3278
02:09:54,560 –> 02:09:56,480
با اشاره به null
3279
02:09:56,480 –> 02:09:58,639
و ما نیز یک ریشه ایجاد کرده ایم
3280
02:09:58,639 –> 02:10:01,280
مرجعی که در واقع به آن اشاره می کند
3281
02:10:01,280 –> 02:10:04,239
در ابتدا باطل
3282
02:10:06,320 –> 02:10:08,880
اکنون این درخت باینری در واقع خالی است
3283
02:10:08,880 –> 02:10:12,159
در ابتدا این مرحله یک به مرحله ما است
3284
02:10:12,159 –> 02:10:14,000
دو چیزی که می خواهیم انجام دهیم این است که می خواهیم
3285
02:10:14,000 –> 02:10:16,960
درج گره ها را انجام دهید بنابراین فرض کنید
3286
02:10:16,960 –> 02:10:21,040
من می خواهم یک گره 5 را در اینجا وارد کنم
3287
02:10:21,040 –> 02:10:23,840
بنابراین در حال حاضر از آنجایی که ما می دانیم که ما
3288
02:10:23,840 –> 02:10:26,719
درخت دودویی ما خالی است
3289
02:10:26,719 –> 02:10:29,840
ما باید شرط اول که a
3290
02:10:29,840 –> 02:10:31,760
شرط بسیار مهم
3291
02:10:31,760 –> 02:10:34,400
بررسی اینکه آیا گره ریشه یا گره است
3292
02:10:34,400 –> 02:10:37,360
مرجع ریشه خالی است یا خیر
3293
02:10:37,360 –> 02:10:39,760
اگر خالی باشد ما به سادگی می رویم
3294
02:10:39,760 –> 02:10:41,280
مطمئن شوید
3295
02:10:41,280 –> 02:10:44,400
که این گره در واقع برای اولین بار است
3296
02:10:44,400 –> 02:10:48,560
با استفاده از گره کلاس اینجا یک گره ایجاد کنید
3297
02:10:48,560 –> 02:10:51,280
با عبور از این شی 5
3298
02:10:51,280 –> 02:10:54,000
با داده 5 بنابراین یک گره ایجاد می کند
3299
02:10:54,000 –> 02:10:56,079
5 چیزی شبیه به این و بعد چه
3300
02:10:56,079 –> 02:10:57,599
ما قصد داریم انجام دهیم این است
3301
02:10:57,599 –> 02:11:00,320
در ابتدا گره ریشه را مجدداً اختصاص می دهیم
3302
02:11:00,320 –> 02:11:02,560
تهی بود بنابراین ما دوباره
3303
02:11:02,560 –> 02:11:06,000
آن را مجدداً تنظیم کنید و اکنون قرار بود
3304
02:11:06,000 –> 02:11:08,800
رجوع به این گره شود
3305
02:11:08,800 –> 02:11:12,079
این یکی پس اکنون اولین ما را ایجاد خواهد کرد
3306
02:11:12,079 –> 02:11:15,199
گره داخل یک باینری پس بیایید ببینیم چگونه
3307
02:11:15,199 –> 02:11:17,360
فراخوانی تابع قرار است و چگونه باشد
3308
02:11:17,360 –> 02:11:19,199
ما این مهم را انجام خواهیم داد
3309
02:11:19,199 –> 02:11:22,079
مرحله ای که قرار دادن یک گره در داخل است
3310
02:11:22,079 –> 02:11:24,719
عنصر ریشه
3311
02:11:24,719 –> 02:11:27,520
بسیار خوب، بنابراین ما می خواهیم استفاده کنیم
3312
02:11:27,520 –> 02:11:30,480
هدف از bt جدید
3313
02:11:30,480 –> 02:11:33,040
که هدف این درخت دوتایی است
3314
02:11:33,040 –> 02:11:35,040
چون می خواهیم همه کارها را انجام دهیم
3315
02:11:35,040 –> 02:11:38,079
درج های داخل این شیء باینری
3316
02:11:38,079 –> 02:11:39,119
درخت
3317
02:11:39,119 –> 02:11:41,360
بنابراین به همین دلیل است که ما در واقع تماس می گیریم
3318
02:11:41,360 –> 02:11:44,719
تابع درج با استفاده از این شی
3319
02:11:44,719 –> 02:11:47,280
که bd جدید است
3320
02:11:47,280 –> 02:11:49,360
برای انجام درج ابتدا باید داشته باشید
3321
02:11:49,360 –> 02:11:50,880
فهمیدن
3322
02:11:50,880 –> 02:11:53,599
چه چیزهایی نیاز داریم
3323
02:11:53,599 –> 02:11:55,679
برای انجام درج
3324
02:11:55,679 –> 02:11:58,880
اولین چیز واضح است که ما به داده نیاز داریم
3325
02:11:58,880 –> 02:12:01,199
که قرار است درج شود
3326
02:12:01,199 –> 02:12:04,159
دومین چیز این است که من می خواهم
3327
02:12:04,159 –> 02:12:07,440
pass برای عبور از گره ریشه یا the است
3328
02:12:07,440 –> 02:12:10,480
مرجع ریشه این درخت باینری
3329
02:12:10,480 –> 02:12:13,599
من می توانم این کار را فقط با استفاده از new انجام دهم
3330
02:12:13,599 –> 02:12:14,639
bt
3331
02:12:14,639 –> 02:12:17,040
ریشه نقطه
3332
02:12:17,040 –> 02:12:19,280
حالا دلیل اینکه چرا این کار را انجام می دهیم
3333
02:12:19,280 –> 02:12:21,520
زمانی که ما این کار را انجام دهیم واضح تر خواهد شد
3334
02:12:21,520 –> 02:12:23,760
این تابع درج را بنویسید زیرا ما
3335
02:12:23,760 –> 02:12:25,840
قرار است از بازگشت در داخل استفاده کنند
3336
02:12:25,840 –> 02:12:27,599
این تابع درج
3337
02:12:27,599 –> 02:12:30,159
که این گره ریشه را دوباره به آن اختصاص می دهد
3338
02:12:30,159 –> 02:12:32,719
گره چپ یا راست بسته به
3339
02:12:32,719 –> 02:12:35,280
شرایط اما در این لحظه اینجاست
3340
02:12:35,280 –> 02:12:38,400
من قصد دارم این مفهوم را انتزاعی کنم
3341
02:12:38,400 –> 02:12:40,079
بنابراین فقط فرض کنید که در درج
3342
02:12:40,079 –> 02:12:43,599
تابع ما فقط داده ها را ارسال می کنیم
3343
02:12:43,599 –> 02:12:46,159
اکنون در داخل تابع insert ما
3344
02:12:46,159 –> 02:12:49,760
ابتدا باید یک پارامتر self بنویسید
3345
02:12:49,760 –> 02:12:52,159
که در واقع می گوید که این درج
3346
02:12:52,159 –> 02:12:55,199
تابع از شیء جدید bt است
3347
02:12:55,199 –> 02:12:58,320
اکنون آنچه می خواهیم انجام دهیم این است که می خواهیم
3348
02:12:58,320 –> 02:13:01,360
آیا ما در اینجا داده ای داریم
3349
02:13:01,360 –> 02:13:03,679
و ما یک مرجع داریم که bt جدید است
3350
02:13:03,679 –> 02:13:07,199
مرجع ریشه نقطه من می خواهم آن را بسازم
3351
02:13:07,199 –> 02:13:08,800
من می خواهم آن را بنویسم که این است
3352
02:13:08,800 –> 02:13:10,000
در واقع a
3353
02:13:10,000 –> 02:13:13,119
مرجع مرجع
3354
02:13:13,119 –> 02:13:15,440
در حال حاضر اولین شرط است که ما در حال حاضر
3355
02:13:15,440 –> 02:13:18,239
دیدم در اینجا در اسلاید این است که برای اولین بار ما
3356
02:13:18,239 –> 02:13:21,040
نیاز به بررسی اینکه آیا ریشه این است
3357
02:13:21,040 –> 02:13:24,719
درخت دودویی پوچ است یا خیر
3358
02:13:24,719 –> 02:13:26,320
پس اگر هیچکدام نباشد
3359
02:13:26,320 –> 02:13:28,639
یعنی ریشه درخت باینری است
3360
02:13:28,639 –> 02:13:30,960
خالی کردن چیزی که ما به سادگی می خواهیم انجام دهیم این است
3361
02:13:30,960 –> 02:13:32,320
ما می خواهیم
3362
02:13:32,320 –> 02:13:35,679
ابتدا یک شی از کلاس گره ایجاد کنید
3363
02:13:35,679 –> 02:13:37,360
انتقال داده ها
3364
02:13:37,360 –> 02:13:40,880
که 5 است و به خود اختصاص دهد
3365
02:13:40,880 –> 02:13:43,280
ما باید گره ریشه را دوباره اختصاص دهیم
3366
02:13:43,280 –> 02:13:45,280
ما این کار را انجام خواهیم داد
3367
02:13:45,280 –> 02:13:49,679
بنابراین اکنون کاری که این خط انجام می دهد این است که ایجاد می کند
3368
02:13:49,679 –> 02:13:52,719
به سادگی ایجاد می کند یا باید بنویسم
3369
02:13:52,719 –> 02:13:55,520
به طور خاص اختصاص می دهد
3370
02:13:55,520 –> 02:13:57,040
یک گره
3371
02:13:57,040 –> 02:13:57,840
و
3372
02:13:57,840 –> 02:13:59,119
ریشه
3373
02:13:59,119 –> 02:14:00,440
است
3374
02:14:00,440 –> 02:14:03,679
ارجاع به این گره
3375
02:14:03,679 –> 02:14:05,599
حالا بیایید ببینیم چه فایده ای دارد
3376
02:14:05,599 –> 02:14:07,920
پارامتر مرجع و چگونه می توانیم
3377
02:14:07,920 –> 02:14:09,760
عناصر بیشتری را در داخل این قرار دهید
3378
02:14:09,760 –> 02:14:11,360
دودویی
3379
02:14:11,360 –> 02:14:13,360
برای درج چند عنصر دیگر می روم
3380
02:14:13,360 –> 02:14:16,800
برای برقراری تماس های بیشتر با همان عملکرد
3381
02:14:16,800 –> 02:14:19,760
اما با استفاده از متفاوت
3382
02:14:19,760 –> 02:14:22,560
داده، بنابراین من 5 را در اینجا خواهم نوشت
3383
02:14:22,560 –> 02:14:24,880
7
3384
02:14:25,360 –> 02:14:27,040
13
3385
02:14:27,040 –> 02:14:30,639
یا شاید 12 و بیایید یک تماس دیگر برقرار کنیم
3386
02:14:30,639 –> 02:14:33,119
استفاده كردن
3387
02:14:33,280 –> 02:14:35,040
15.
3388
02:14:35,040 –> 02:14:37,280
اکنون می خواهیم مطمئن شویم که
3389
02:14:37,280 –> 02:14:38,400
درج
3390
02:14:38,400 –> 02:14:40,880
عملیاتی که قرار است انجام دهیم
3391
02:14:40,880 –> 02:14:44,079
این درخت باینری را به صورت باینری می سازد
3392
02:14:44,079 –> 02:14:46,159
درخت را درست جستجو کنید، بنابراین ما در واقع هستیم
3393
02:14:46,159 –> 02:14:49,119
ایجاد یک درخت باینری اما وجود دارد
3394
02:14:49,119 –> 02:14:51,840
تغییرات جزئی درخت دودویی که است
3395
02:14:51,840 –> 02:14:54,320
معروف به درخت جستجوی دودویی و آن
3396
02:14:54,320 –> 02:14:55,199
در حقیقت
3397
02:14:55,199 –> 02:14:58,079
عملیات جستجو را بهینه می کند
3398
02:14:58,079 –> 02:15:00,800
در داخل یک درخت باینری پس بیایید ببینیم چگونه
3399
02:15:00,800 –> 02:15:02,880
این عناصر قرار است وارد شوند
3400
02:15:02,880 –> 02:15:05,520
داخل یک درخت جستجوی دودویی
3401
02:15:05,520 –> 02:15:08,719
بنابراین ما می خواهیم عناصر بیشتری را وارد کنیم
3402
02:15:08,719 –> 02:15:11,199
بنابراین در اینجا می توانید ببینید که من تماس گرفته ام
3403
02:15:11,199 –> 02:15:14,639
4 7 12 و 15
3404
02:15:14,639 –> 02:15:15,599
4
3405
02:15:15,599 –> 02:15:16,719
7
3406
02:15:16,719 –> 02:15:18,800
12 و 15.
3407
02:15:18,800 –> 02:15:21,040
اکنون در ابتدا یک گره ریشه داریم که
3408
02:15:21,040 –> 02:15:22,400
پنج است
3409
02:15:22,400 –> 02:15:24,320
root به این گره اشاره می کند که ما
3410
02:15:24,320 –> 02:15:26,800
در مرحله شماره دو انجام داده اند
3411
02:15:26,800 –> 02:15:28,560
این شماره مرحله خواهد بود
3412
02:15:28,560 –> 02:15:30,480
سه
3413
02:15:30,480 –> 02:15:33,280
حالا بیایید ببینیم که چگونه چهار را در داخل قرار دهیم
3414
02:15:33,280 –> 02:15:34,719
از این ریشه
3415
02:15:34,719 –> 02:15:36,560
حالا کاری که می خواهم اینجا انجام دهم این است که هستم
3416
02:15:36,560 –> 02:15:38,960
دو شرط به
3417
02:15:38,960 –> 02:15:41,760
عملیات درج را انجام دهید
3418
02:15:41,760 –> 02:15:45,119
این درخت باینری به عنوان درخت جستجوی دودویی
3419
02:15:45,119 –> 02:15:47,760
یا bst
3420
02:15:47,760 –> 02:15:50,320
این شرایط چه شرایطی است
3421
02:15:50,320 –> 02:15:53,520
می گوید که اگر مقدار گره
3422
02:15:53,520 –> 02:15:56,320
که می خواهید در داخل a وارد کنید
3423
02:15:56,320 –> 02:15:58,400
درخت دوتایی
3424
02:15:58,400 –> 02:16:01,440
مقداری دارد که کمتر از مقدار است
3425
02:16:01,440 –> 02:16:05,079
از گره ریشه
3426
02:16:05,599 –> 02:16:07,599
درست است، بنابراین اگر ما بخواهیم می توانید اینجا را ببینید
3427
02:16:07,599 –> 02:16:09,679
چهار را وارد کنید ابتدا آن را با هم مقایسه می کنیم
3428
02:16:09,679 –> 02:16:11,840
با گره ریشه اکنون می توانید آن را ببینید
3429
02:16:11,840 –> 02:16:14,239
ارزش کمتر از پنج است پس ما چه هستیم
3430
02:16:14,239 –> 02:16:19,199
ما قصد داریم آن را درج کنیم
3431
02:16:19,199 –> 02:16:19,920
که در
3432
02:16:19,920 –> 02:16:21,679
آن را در
3433
02:16:21,679 –> 02:16:24,880
قسمت سمت راست درخت
3434
02:16:24,880 –> 02:16:27,840
درست است بنابراین 4 در درج می شود
3435
02:16:27,840 –> 02:16:29,520
قسمت سمت راست درخت
3436
02:16:29,520 –> 02:16:31,280
حالا بیایید عنصر بعدی را در نظر بگیریم
3437
02:16:31,280 –> 02:16:32,478
که 7 است
3438
02:16:32,478 –> 02:16:34,638
پس شرط دوم این است که اگر
3439
02:16:34,638 –> 02:16:37,920
ارزش گره
3440
02:16:37,920 –> 02:16:40,478
بیشتر از ارزش است
3441
02:16:40,478 –> 02:16:42,959
از ریشه که می خواهیم آن را در آن وارد کنیم
3442
02:16:42,959 –> 02:16:45,760
قسمت سمت راست درخت
3443
02:16:45,760 –> 02:16:48,160
این دو شرط بسیار مفید هستند
3444
02:16:48,160 –> 02:16:50,000
زیرا آنها در واقع
3445
02:16:50,000 –> 02:16:52,398
این درخت باینری را به عنوان جستجوی دودویی بسازید
3446
02:16:52,398 –> 02:16:54,879
درخت بنابراین هر بار که می خواهیم یک را اجرا کنیم
3447
02:16:54,879 –> 02:16:57,200
عملیات جستجو را در واقع می توانیم ترک کنیم
3448
02:16:57,200 –> 02:17:00,160
یک شاخه و ما آن را به مقدار زیادی از
3449
02:17:00,160 –> 02:17:02,318
پیچیدگی زمانی
3450
02:17:02,318 –> 02:17:04,638
بنابراین در اینجا 7 قرار است درج شود
3451
02:17:04,638 –> 02:17:07,040
داخل یک درخت دوتایی
3452
02:17:07,040 –> 02:17:09,439
حالا بیایید ببینیم عنصر بعدی چیست
3453
02:17:09,439 –> 02:17:11,599
12 و 15
3454
02:17:11,599 –> 02:17:13,519
قبل از حرکت به درج این دو
3455
02:17:13,519 –> 02:17:14,558
عناصر
3456
02:17:14,558 –> 02:17:17,519
که بسیار متفاوت است
3457
02:17:17,519 –> 02:17:19,920
استراتژی در حال انجام است که ما از آن استفاده خواهیم کرد
3458
02:17:19,920 –> 02:17:23,200
بیایید ببینیم این 12 کجا آن را وارد می کند
3459
02:17:23,200 –> 02:17:25,920
اکنون 12 ابتدا با این مقایسه می شود
3460
02:17:25,920 –> 02:17:29,359
عنصر ریشه گره 12 مقدار بیشتری دارد
3461
02:17:29,359 –> 02:17:30,799
از 5
3462
02:17:30,799 –> 02:17:33,840
بنابراین باید در داخل آن قرار داده شود
3463
02:17:33,840 –> 02:17:37,040
قسمت چپ درخت
3464
02:17:37,040 –> 02:17:39,679
اما اکنون مشاهده می شود که چپ
3465
02:17:39,679 –> 02:17:41,359
بخشی از درخت
3466
02:17:41,359 –> 02:17:43,679
که با استفاده از آن می توانیم به آن دسترسی پیدا کنیم
3467
02:17:43,679 –> 02:17:46,880
نقطه ریشه باقی مانده است
3468
02:17:47,040 –> 02:17:50,080
نقطه ریشه باقی مانده است
3469
02:17:52,160 –> 02:17:54,718
اکنون این نشانگر سمت چپ خواهد بود
3470
02:17:54,718 –> 02:17:57,679
بنابراین این قسمت سمت چپ درخت
3471
02:17:57,679 –> 02:18:00,478
قبلاً یک عنصر در آن ذخیره شده است
3472
02:18:00,478 –> 02:18:02,080
اکنون آنچه می خواهیم انجام دهیم این است که می خواهیم
3473
02:18:02,080 –> 02:18:04,558
12 را وارد کنید اما نمی توانیم 12 را در اینجا وارد کنیم
3474
02:18:04,558 –> 02:18:06,638
زیرا 7 در حال حاضر وجود دارد
3475
02:18:06,638 –> 02:18:08,160
پس کاری که می خواهیم انجام دهیم این است که هستیم
3476
02:18:08,160 –> 02:18:10,638
مطمئن شویم که یک را ایجاد می کنیم
3477
02:18:10,638 –> 02:18:12,398
متغیر موقت
3478
02:18:12,398 –> 02:18:16,478
که در ابتدا در واقع یک ریشه است
3479
02:18:16,478 –> 02:18:18,638
مقدار یا یک مرجع ریشه
3480
02:18:18,638 –> 02:18:20,718
بنابراین متغیر موقت در واقع a است
3481
02:18:20,718 –> 02:18:23,120
اشاره به گره ریشه و آنچه ما هستیم
3482
02:18:23,120 –> 02:18:25,920
انجام خواهد داد این است که ما آن را دوباره به این اختصاص می دهیم
3483
02:18:25,920 –> 02:18:28,718
بخشی که اینجاست
3484
02:18:28,718 –> 02:18:31,359
و اکنون این گره موقت به اینجا اشاره می کند
3485
02:18:31,359 –> 02:18:33,439
اکنون کاری که می توانیم انجام دهیم این است که می توانیم از آن استفاده کنیم
3486
02:18:33,439 –> 02:18:35,679
همان استراتژی که ما در مورد استفاده کرده ایم
3487
02:18:35,679 –> 02:18:38,080
از root ما مقدار را در آن مقایسه خواهیم کرد
3488
02:18:38,080 –> 02:18:40,638
این گره موقت با مقدار that
3489
02:18:40,638 –> 02:18:42,398
می خواهیم درج کنیم
3490
02:18:42,398 –> 02:18:45,599
و اکنون می دانیم که 12 بزرگتر از
3491
02:18:45,599 –> 02:18:48,558
7 بنابراین قرار است درج شود
3492
02:18:48,558 –> 02:18:49,599
در
3493
02:18:49,599 –> 02:18:52,000
قسمت سمت راست درخت
3494
02:18:52,000 –> 02:18:54,638
ما به تغییر این موقت ادامه خواهیم داد
3495
02:18:54,638 –> 02:18:57,760
در مورد برنامه نویسی ما به اینجا مراجعه کنید
3496
02:18:57,760 –> 02:19:00,718
ما در واقع از temp به عنوان استفاده نکرده ایم
3497
02:19:00,718 –> 02:19:03,599
نام متغیر ما از مرجع به عنوان استفاده کرده ایم
3498
02:19:03,599 –> 02:19:04,558
نام
3499
02:19:04,558 –> 02:19:06,000
بنابراین کاری که می خواهیم انجام دهیم این است که هستیم
3500
02:19:06,000 –> 02:19:08,240
مطمئن شوید که این مرجع
3501
02:19:08,240 –> 02:19:11,200
به قسمت چپ یا راست اختصاص داده شده است
3502
02:19:11,200 –> 02:19:14,000
با توجه به آنچه درج انجام می دهیم
3503
02:19:14,000 –> 02:19:16,160
اگر بخواهیم اجرا خواهیم کرد
3504
02:19:16,160 –> 02:19:18,638
عنصر را در قسمت سمت راست ما وارد کنید
3505
02:19:18,638 –> 02:19:20,799
مطمئن شوید که مرجع است
3506
02:19:20,799 –> 02:19:22,638
در واقع به سمت راست اشاره می کند
3507
02:19:22,638 –> 02:19:25,119
درخت
3508
02:19:25,599 –> 02:19:27,200
وقتی ما همه چیز روشن تر می شود
3509
02:19:27,200 –> 02:19:29,359
این را اجرا خواهد کرد، بنابراین بیایید شروع کنیم
3510
02:19:29,359 –> 02:19:31,599
بخش اجرا
3511
02:19:31,599 –> 02:19:34,080
اکنون می توانید ببینید که من در همه موارد دارم
3512
02:19:34,080 –> 02:19:36,959
من یک پارامتر دوم را پاس کرده ام که
3513
02:19:36,959 –> 02:19:39,280
پارامتر ریشه است
3514
02:19:39,280 –> 02:19:42,080
بنابراین در ابتدا ما در موقعیت ریشه قرار داریم
3515
02:19:42,080 –> 02:19:45,200
مشاهده می کنیم که ریشه پوچ نیست
3516
02:19:45,200 –> 02:19:47,439
بنابراین اکنون دیگری می نویسیم
3517
02:19:47,439 –> 02:19:49,680
مورد دیگر در اینجا
3518
02:19:49,680 –> 02:19:51,760
اگر ریشه پوچ نباشد
3519
02:19:51,760 –> 02:19:54,080
چیزی که قرار است اجرا کنیم
3520
02:19:54,080 –> 02:19:56,479
حالا چون درخت دوتایی ریشه دارد
3521
02:19:56,479 –> 02:19:59,359
گره اولین وظیفه مهم این است که
3522
02:19:59,359 –> 02:20:02,560
در واقع یک گره جدید ایجاد کنید
3523
02:20:02,560 –> 02:20:05,840
ما می توانیم این کار را فقط با فراخوانی یک شی انجام دهیم
3524
02:20:05,840 –> 02:20:07,840
با مقداری ارزش و ما می دانیم که
3525
02:20:07,840 –> 02:20:10,000
ارزش داده است
3526
02:20:10,000 –> 02:20:11,920
بنابراین به این ترتیب ما را اختصاص داده ایم
3527
02:20:11,920 –> 02:20:15,120
داده ها اما هنوز این داده ها باید باشند
3528
02:20:15,120 –> 02:20:18,240
در موقعیت مناسب قرار داده شده است
3529
02:20:18,240 –> 02:20:20,080
با توجه به شرایطی که ما
3530
02:20:20,080 –> 02:20:22,640
داشته باشیم که ما قصد داریم آن را اعمال کنیم
3531
02:20:22,640 –> 02:20:25,040
در مورد درخت جستجوی دودویی
3532
02:20:25,040 –> 02:20:27,680
پس بیایید ببینیم شرایط چیست
3533
02:20:27,680 –> 02:20:30,479
شرط اول این است که داده های شما
3534
02:20:30,479 –> 02:20:32,880
مایل به درج کردن
3535
02:20:32,880 –> 02:20:34,960
کمتر است از
3536
02:20:34,960 –> 02:20:38,080
node.data
3537
02:20:38,080 –> 02:20:40,640
بنابراین node.data چیست
3538
02:20:40,640 –> 02:20:43,600
ببخشید ref.data خواهد بود
3539
02:20:43,600 –> 02:20:45,520
بنابراین شما می توانید ببینید که من در حال عبور از
3540
02:20:45,520 –> 02:20:49,200
ارجاع ریشه به این متغیر ref
3541
02:20:49,200 –> 02:20:52,640
این مرجع موقتی را نگه می دارد
3542
02:20:52,640 –> 02:20:55,120
ارجاع به گره ریشه دارد
3543
02:20:55,120 –> 02:20:57,120
کاری که این قرار است انجام دهد این است که می رود
3544
02:20:57,120 –> 02:21:00,000
برای بررسی اینکه آیا این داده ها در این است
3545
02:21:00,000 –> 02:21:01,120
مرجع
3546
02:21:01,120 –> 02:21:03,359
مرجع در ابتدا به ریشه اشاره می کند
3547
02:21:03,359 –> 02:21:06,800
بنابراین root.data در واقع در مورد ما 5 است
3548
02:21:06,800 –> 02:21:09,840
بنابراین اگر داده ها در اینجا 4 است اگر ما
3549
02:21:09,840 –> 02:21:12,479
می خواهیم آن را در داخل درخت قرار دهیم
3550
02:21:12,479 –> 02:21:14,640
قرار است آن را با ریشه مقایسه کنند
3551
02:21:14,640 –> 02:21:16,960
داده های نقطه ای در ابتدا
3552
02:21:16,960 –> 02:21:19,920
اگر کمتر از این باشد مجبوریم
3553
02:21:19,920 –> 02:21:22,640
یک شرط خیلی مهم بنویس
3554
02:21:22,640 –> 02:21:24,000
هیچ جایی
3555
02:21:24,000 –> 02:21:26,640
اگر داده ها کمتر از نقطه ریشه باشد
3556
02:21:26,640 –> 02:21:27,520
داده ها
3557
02:21:27,520 –> 02:21:29,520
ما قبلاً شرط را نوشته ایم
3558
02:21:29,520 –> 02:21:32,560
در اینجا که اگر مقدار کمتر از ما باشد
3559
02:21:32,560 –> 02:21:34,720
قرار است آن را در قسمت سمت راست وارد کنند
3560
02:21:34,720 –> 02:21:35,600
درست
3561
02:21:35,600 –> 02:21:37,520
بنابراین اگر بخواهیم در سمت راست درج کنیم
3562
02:21:37,520 –> 02:21:39,520
ابتدا باید بخشی از درخت را انجام دهیم
3563
02:21:39,520 –> 02:21:42,479
بررسی کنید که آیا مرجع صحیح است
3564
02:21:42,479 –> 02:21:45,200
گره ریشه خالی است یا نه
3565
02:21:45,200 –> 02:21:46,880
برای آن من می خواهم بسیار بنویسم
3566
02:21:46,880 –> 02:21:49,680
شرایط مهم اینجا در داخل این
3567
02:21:49,680 –> 02:21:51,040
اگر بیانیه
3568
02:21:51,040 –> 02:21:52,720
مطمئن شوید که واقعاً از آن استفاده می کنید
3569
02:21:52,720 –> 02:21:55,840
تورفتگی سمت راست بین موارد if
3570
02:21:55,840 –> 02:21:58,240
بنابراین اگر مورد زمانی باشد که داده ها کمتر باشد
3571
02:21:58,240 –> 02:22:00,560
از ref.data
3572
02:22:00,560 –> 02:22:01,840
اگر ارزش
3573
02:22:01,840 –> 02:22:04,399
مرجع
3574
02:22:04,399 –> 02:22:06,080
نقطه
3575
02:22:06,080 –> 02:22:07,680
نوشتن
3576
02:22:07,680 –> 02:22:08,800
است
3577
02:22:08,800 –> 02:22:11,439
نه هیچ کدام
3578
02:22:11,840 –> 02:22:13,840
درست است به این معنی است که ما واقعاً در حال بررسی هستیم
3579
02:22:13,840 –> 02:22:16,720
چون می خواهیم داده ها را وارد کنیم
3580
02:22:16,720 –> 02:22:18,800
در سمت راست درخت خواهیم بود
3581
02:22:18,800 –> 02:22:20,880
باید بررسی کنید که آیا به آن اشاره می کند
3582
02:22:20,880 –> 02:22:23,920
اگر به null اشاره می کند null یا خیر
3583
02:22:23,920 –> 02:22:25,760
کاری که ما می توانیم انجام دهیم این است که بتوانیم آن را انجام دهیم
3584
02:22:25,760 –> 02:22:27,439
عملیات درج
3585
02:22:27,439 –> 02:22:29,680
و چگونه می توانیم این کار را با ساختن یک
3586
02:22:29,680 –> 02:22:34,160
به تابع self.insert فراخوانی کنید
3587
02:22:34,160 –> 02:22:36,319
و در تابع insert ما چه هستیم
3588
02:22:36,319 –> 02:22:38,160
قرار است انجام دهیم این است که ما فقط قرار است بگذریم
3589
02:22:38,160 –> 02:22:40,240
داده
3590
02:22:40,240 –> 02:22:43,280
و ما در حال عبور از مرجع
3591
02:22:43,280 –> 02:22:44,399
نقطه
3592
02:22:44,399 –> 02:22:45,680
درست
3593
02:22:45,680 –> 02:22:47,600
حالا بیایید ببینیم معنی این چیست
3594
02:22:47,600 –> 02:22:50,560
خط و چرا لازم است
3595
02:22:50,560 –> 02:22:53,760
در اینجا می توانید ببینید ref.right هیچ کدام نیست
3596
02:22:53,760 –> 02:22:55,920
به این معنی است که یک عنصر وجود دارد
3597
02:22:55,920 –> 02:22:58,720
که از قبل وجود دارد در داخل
3598
02:22:58,720 –> 02:23:01,120
قسمت سمت راست درخت
3599
02:23:01,120 –> 02:23:03,840
پس بیایید در نظر بگیریم
3600
02:23:03,840 –> 02:23:06,479
بنابراین در ابتدا ما این 5 گره را داریم
3601
02:23:06,479 –> 02:23:08,560
موقعیت ریشه
3602
02:23:08,560 –> 02:23:11,359
من این مرجع ریشه را به
3603
02:23:11,359 –> 02:23:13,359
تابع را وارد کنید تا یک تابع دیگر داشته باشیم
3604
02:23:13,359 –> 02:23:15,520
مرجع ref که در ابتدا است
3605
02:23:15,520 –> 02:23:17,280
با اشاره به اینجا
3606
02:23:17,280 –> 02:23:18,880
و اکنون آنچه را که بررسی می کنیم این است که هستیم
3607
02:23:18,880 –> 02:23:22,240
بررسی آن نقطه ref سمت راست
3608
02:23:22,240 –> 02:23:24,160
اگر پوچ باشد یا نه
3609
02:23:24,160 –> 02:23:26,399
حالا بیایید بگوییم در واقع تعدادی وجود دارد
3610
02:23:26,399 –> 02:23:28,479
عنصر با فرض کنید مقداری وجود دارد
3611
02:23:28,479 –> 02:23:30,560
عنصر x در اینجا
3612
02:23:30,560 –> 02:23:32,399
اگر آنجا باشد کاری که قرار است انجام دهیم
3613
02:23:32,399 –> 02:23:35,280
آیا ما قصد داریم این