در این مطلب، ویدئو ساختار داده صف و دایره ای در پایتون برای مبتدیان با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:12:19
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,160 –> 00:00:02,879
بچه ها چه خبر است pedro اینجا از
2
00:00:02,879 –> 00:00:03,480
new
3
00:00:03,480 –> 00:00:06,560
coder.com است و در این آموزش می
4
00:00:06,560 –> 00:00:07,839
خواهیم در مورد
5
00:00:07,839 –> 00:00:11,360
نشانه ها صحبت کنیم که صف یک ساختار داده خطی است
6
00:00:11,360 –> 00:00:14,160
که می تواند با استفاده از یک آرایه
7
00:00:14,160 –> 00:00:15,599
یا یک لیست پیوندی
8
00:00:15,599 –> 00:00:17,520
در این ویدیو که ما خواهیم رفت پیاده سازی شود. در
9
00:00:17,520 –> 00:00:18,720
مورد نحوه پیاده سازی
10
00:00:18,720 –> 00:00:22,480
نشانه با استفاده از یک آرایه، بنابراین برای شروع یک
11
00:00:22,480 –> 00:00:22,960
صف
12
00:00:22,960 –> 00:00:26,560
دارای دو روش اصلی است، یک روش به نام nq
13
00:00:26,560 –> 00:00:28,400
که داده ها را به پشت
14
00:00:28,400 –> 00:00:30,080
صف اضافه می کند و یک
15
00:00:30,080 –> 00:00:32,238
روش dq که
16
00:00:32,238 –> 00:00:33,680
داده های درج شده
17
00:00:33,680 –> 00:00:35,520
در جلوی صف را حذف و برمی گرداند. این
18
00:00:35,520 –> 00:00:37,120
از اصول fifo پیروی می کند
19
00:00:37,120 –> 00:00:39,680
که مخفف first و first out است،
20
00:00:39,680 –> 00:00:41,840
به این معنی که داده هایی که برای اولین بار
21
00:00:41,840 –> 00:00:43,120
در صف قرار داده شده
22
00:00:43,120 –> 00:00:45,440
است، اولین موردی است که به دلیل
23
00:00:45,440 –> 00:00:48,079
این ویژگی ها حذف می شود.
24
00:00:48,079 –> 00:00:49,600
25
00:00:49,600 –> 00:00:52,399
فردی
26
00:00:52,399 –> 00:00:54,079
که در صف اول
27
00:00:54,079 –> 00:00:57,039
است، شخصی است که برای اولین بار به او سرویس داده شده است، بنابراین اکنون
28
00:00:57,039 –> 00:00:58,320
اجازه دهید به
29
00:00:58,320 –> 00:01:01,359
روش q init خود بپردازیم تا متد خالص ما دو پارامتر دریافت کند،
30
00:01:01,359 –> 00:01:01,760
31
00:01:01,760 –> 00:01:04,720
پارامتر ظرفیت حداکثر
32
00:01:04,720 –> 00:01:06,560
تعداد عناصری است که
33
00:01:06,560 –> 00:01:07,760
در que ذخیره می کنیم. ue
34
00:01:07,760 –> 00:01:09,520
اولین چیزی که به آن نیاز داریم
35
00:01:09,520 –> 00:01:11,200
مکانی برای ذخیره داده
36
00:01:11,200 –> 00:01:13,119
هایمان برای صف است و همانطور که در
37
00:01:13,119 –> 00:01:14,720
ابتدای ویدیو
38
00:01:14,720 –> 00:01:17,119
گفتم ما از یک آرایه استفاده می کنیم اکنون کاری که باید
39
00:01:17,119 –> 00:01:18,640
انجام دهیم این است که
40
00:01:18,640 –> 00:01:21,280
دو موقعیت را در داخل خود پیگیری کنیم. آرایه از آنجایی که
41
00:01:21,280 –> 00:01:21,759
42
00:01:21,759 –> 00:01:23,840
در پشت صف اضافه می کنیم و
43
00:01:23,840 –> 00:01:24,960
در جلوی صف حذف می
44
00:01:24,960 –> 00:01:27,119
کنیم، به جلو می رویم و شاخص سرمان را
45
00:01:27,119 –> 00:01:28,640
به صفر
46
00:01:28,640 –> 00:01:30,880
مقداردهی می کنیم و دم خود را به اندیس صفر مقدار دهی اولیه می
47
00:01:30,880 –> 00:01:32,479
کنیم و همچنین
48
00:01:32,479 –> 00:01:34,560
شاخص سرمان را پیگیری می کنیم.
49
00:01:34,560 –> 00:01:35,600
جلوی صف
50
00:01:35,600 –> 00:01:37,920
و نمایه دم ما که پشت صف را ردیابی می کنیم،
51
00:01:37,920 –> 00:01:39,040
در مرحله
52
00:01:39,040 –> 00:01:41,040
بعد جلو می رویم و
53
00:01:41,040 –> 00:01:42,399
اندازه خود را به اندازه صفر مقداردهی اولیه می کنیم
54
00:01:42,399 –> 00:01:44,240
که تعداد عناصر
55
00:01:44,240 –> 00:01:46,000
موجود در صف ما است
56
00:01:46,000 –> 00:01:47,759
و در نهایت به جلو می رویم و
57
00:01:47,759 –> 00:01:49,360
ظرفیت را مقداردهی اولیه می
58
00:01:49,360 –> 00:01:52,159
کنیم. ظرفیتی که در مرحله بعدی منتقل
59
00:01:52,159 –> 00:01:54,320
می شود، از یک روش متفرقه عبور می
60
00:01:54,320 –> 00:01:56,560
کنیم، متدی به نام is full را خواهیم داشت که
61
00:01:56,560 –> 00:01:58,960
یک بولی در مورد پر بودن یا نبودن صف ما برمی گرداند،
62
00:01:58,960 –> 00:02:00,159
63
00:02:00,159 –> 00:02:02,719
می توانیم بررسی کنیم که آیا صف
64
00:02:02,719 –> 00:02:04,799
پر است یا نه. ظرفیت
65
00:02:04,799 –> 00:02:05,759
q ما
66
00:02:05,759 –> 00:02:08,959
برابر با اندازه l بعدی است
67
00:02:08,959 –> 00:02:09,280
68
00:02:09,280 –> 00:02:12,319
روش nq ما دارای
69
00:02:12,319 –> 00:02:15,360
دو پارامتر است، پارامتر داده،
70
00:02:15,360 –> 00:02:17,200
دادهای است که میخواهیم
71
00:02:17,200 –> 00:02:19,840
در پشت صف وارد کنیم، مرحله اول
72
00:02:19,840 –> 00:02:21,599
بررسی میکنیم که آیا صف ما پر
73
00:02:21,599 –> 00:02:23,760
است یا خیر، بیایید جلو برویم و یک
74
00:02:23,760 –> 00:02:25,360
خطا ایجاد کنیم. اگر این کار انجام نشد، به
75
00:02:25,360 –> 00:02:27,680
این معنی است که لیست ما پر نیست، بنابراین
76
00:02:27,680 –> 00:02:28,400
77
00:02:28,400 –> 00:02:31,200
درج کردن آن بی خطر است، بنابراین در حال حاضر دم ما
78
00:02:31,200 –> 00:02:33,440
باید در شاخصی باشد که باید در آن درج
79
00:02:33,440 –> 00:02:33,840
80
00:02:33,840 –> 00:02:35,599
کنیم، زیرا همیشه به
81
00:02:35,599 –> 00:02:37,680
پشت صف اضافه می کنیم، بنابراین فقط جلو می رویم. و
82
00:02:37,680 –> 00:02:39,760
داده ها را در موقعیت
83
00:02:39,760 –> 00:02:40,160
84
00:02:40,160 –> 00:02:43,120
tail index خود ذخیره می کنیم، سپس باید نمایه دم خود را پیش ببریم،
85
00:02:43,120 –> 00:02:43,840
86
00:02:43,840 –> 00:02:45,760
بنابراین این موقعیت جدیدی برای
87
00:02:45,760 –> 00:02:47,840
درج زمانی خواهد بود که روش صف خود را دوباره فراخوانی می کنیم
88
00:02:47,840 –> 00:02:48,879
89
00:02:48,879 –> 00:02:51,040
و در نهایت به جلو می رویم و
90
00:02:51,040 –> 00:02:52,720
ویژگی اندازه خود را افزایش می دهیم
91
00:02:52,720 –> 00:02:55,040
زیرا ما دادهها را
92
00:02:55,040 –> 00:02:56,720
با موفقیت در پشت صف درج کردیم،
93
00:02:56,720 –> 00:02:59,120
بنابراین حالا بیایید ادامه دهیم و به روش صف خود در عمل نگاهی بیندازیم،
94
00:02:59,120 –> 00:03:00,480
95
00:03:00,480 –> 00:03:03,040
بنابراین بیایید بگوییم این نشانهای است
96
00:03:03,040 –> 00:03:04,000
که پس از
97
00:03:04,000 –> 00:03:06,800
فراخوانی روش q init خود دریافت میکنیم و من میخواهم
98
00:03:06,800 –> 00:03:09,200
ادامه دهم و nq خود را فراخوانی کنیم. روش
99
00:03:09,200 –> 00:03:12,239
عبور در یک به عنوان یک rgument مرحله اول
100
00:03:12,239 –> 00:03:14,640
بیایید به جلو برویم و بررسی کنیم که آیا
101
00:03:14,640 –> 00:03:15,760
صف ما پر
102
00:03:15,760 –> 00:03:18,000
است یا نه، بنابراین بیایید جلو برویم و
103
00:03:18,000 –> 00:03:19,519
داده ها را در
104
00:03:19,519 –> 00:03:22,319
پشت صف ذخیره کنیم، سپس اندیس دم خود را افزایش می دهیم،
105
00:03:22,319 –> 00:03:23,040
106
00:03:23,040 –> 00:03:25,200
این به ما موقعیت انتهایی جدید را می دهد
107
00:03:25,200 –> 00:03:26,480
تا در آن درج کنیم
108
00:03:26,480 –> 00:03:29,200
و در نهایت از آنجایی که ما با موفقیت
109
00:03:29,200 –> 00:03:30,560
به پشت صف اضافه
110
00:03:30,560 –> 00:03:32,640
کردیم، ادامه می دهیم و ویژگی اندازه خود
111
00:03:32,640 –> 00:03:35,360
را با مثالی دیگر افزایش می
112
00:03:35,360 –> 00:03:38,080
دهیم، فرض کنید می خواهم به q2 پایان دهم، اکنون مرحله اول،
113
00:03:38,080 –> 00:03:38,640
114
00:03:38,640 –> 00:03:41,040
بیایید جلو برویم و بررسی کنیم که آیا
115
00:03:41,040 –> 00:03:42,239
صف ما پر
116
00:03:42,239 –> 00:03:44,400
است یا خیر، بنابراین اجازه نمی دهیم برویم. جلو و
117
00:03:44,400 –> 00:03:46,799
داده ها را در پشت صف ذخیره می
118
00:03:46,799 –> 00:03:49,200
کنیم، سپس به جلو می رویم و شاخص دم خود را افزایش می دهیم
119
00:03:49,200 –> 00:03:49,920
120
00:03:49,920 –> 00:03:52,640
و موقعیت انتهایی جدید را به ما می دهد و سپس
121
00:03:52,640 –> 00:03:54,799
در نهایت جلو می رویم و ویژگی اندازه خود را افزایش می
122
00:03:54,799 –> 00:03:55,280
123
00:03:55,280 –> 00:03:57,599
دهیم زیرا با موفقیت
124
00:03:57,599 –> 00:04:00,080
دو عدد را به پشت صف اضافه کردیم.
125
00:04:00,080 –> 00:04:02,799
مثال آخر با روش صف ما و قرار دادن
126
00:04:02,799 –> 00:04:04,640
صف سه در
127
00:04:04,640 –> 00:04:06,959
مرحله اول در صف، بیایید جلو برویم و بررسی کنیم
128
00:04:06,959 –> 00:04:09,120
که آیا صف ما پر
129
00:04:09,120 –> 00:04:11,280
است یا نه، بنابراین اجازه دهید جلو برویم و
130
00:04:11,280 –> 00:04:13,599
داده ها را در پشت صف ذخیره
131
00:04:13,599 –> 00:04:15,840
کنیم، سپس جلو می رویم و شاخص دم خود را افزایش
132
00:04:15,840 –> 00:04:18,399
دهید تا آخرین موقعیت جدید را به دست
133
00:04:18,399 –> 00:04:20,639
آوریم که در نهایت جلو می رویم و ویژگی اندازه خود را افزایش می
134
00:04:20,639 –> 00:04:22,000
135
00:04:22,000 –> 00:04:24,560
دهیم زیرا با موفقیت به صف خود اضافه کردیم،
136
00:04:24,560 –> 00:04:25,680
اکنون از اینجا
137
00:04:25,680 –> 00:04:28,400
به روش dq خود ادامه می دهیم کار روش dq ما
138
00:04:28,400 –> 00:04:29,520
139
00:04:29,520 –> 00:04:32,080
حذف و برگرداندن داده ها
140
00:04:32,080 –> 00:04:33,440
از در جلوی صف
141
00:04:33,440 –> 00:04:35,600
ابتدا باید بررسی کنیم که آیا صف ما
142
00:04:35,600 –> 00:04:37,840
خالی است یا نه، بنابراین جلوتر میرویم و میبینیم
143
00:04:37,840 –> 00:04:41,040
که آیا اندازه برابر با صفر است یا خیر،
144
00:04:41,040 –> 00:04:42,400
فقط جلو میرویم و
145
00:04:42,400 –> 00:04:45,280
اگر صف ما خالی نیست، هیچکدام را برنمیگردانیم، سپس آن را انجام
146
00:04:45,280 –> 00:04:47,360
میدهیم. ادامه دهید و دادهها را در قسمت
147
00:04:47,360 –> 00:04:48,479
جلوی صف ذخیره کنید
148
00:04:48,479 –> 00:04:51,440
قبل از اینکه آنها را حذف کنیم، بنابراین ما آنچه را که در بالای صف است ذخیره میکنیم،
149
00:04:51,440 –> 00:04:52,560
150
00:04:52,560 –> 00:04:54,240
اکنون که دادههایی را داریم که
151
00:04:54,240 –> 00:04:55,759
در جلوی صف ذخیره
152
00:04:55,759 –> 00:04:58,479
شده است، زمان حذف آن فرا رسیده است.
153
00:04:58,479 –> 00:05:00,720
نمایه سر به
154
00:05:00,720 –> 00:05:03,360
موقعیت بعدی از اینجا
155
00:05:03,360 –> 00:05:05,039
ما کمی مدیریت حافظه را انجام
156
00:05:05,039 –> 00:05:07,600
می دهیم و بررسی می کنیم که آیا شاخص سر با شاخص دم برابر است یا خیر،
157
00:05:07,600 –> 00:05:08,560
به
158
00:05:08,560 –> 00:05:11,120
این معنی که می توانیم
159
00:05:11,120 –> 00:05:12,320
شاخص سر و دم خود را
160
00:05:12,320 –> 00:05:15,199
به شاخص صفر بازنشانی کنیم، حالا بیایید جلو برویم و مقدار را
161
00:05:15,199 –> 00:05:16,720
کاهش دهیم. اندازه
162
00:05:16,720 –> 00:05:19,120
از آنجایی که ما با موفقیت داده ها را از آن حذف کردیم
163
00:05:19,120 –> 00:05:20,639
جلوی صف
164
00:05:20,639 –> 00:05:22,960
آخرین مرحله بیایید جلو برویم و
165
00:05:22,960 –> 00:05:24,000
داده
166
00:05:24,000 –> 00:05:26,160
ها را کاملاً برگردانیم، بنابراین از اینجا بیایید
167
00:05:26,160 –> 00:05:27,440
با یک مثال جلو برویم،
168
00:05:27,440 –> 00:05:29,600
بنابراین با استفاده از صفی که با
169
00:05:29,600 –> 00:05:31,280
مثال nq خود ساخته ایم،
170
00:05:31,280 –> 00:05:34,160
اجازه دهید پیش برویم و ابتدا متد dq خود را فراخوانی
171
00:05:34,160 –> 00:05:36,080
کنیم تا ببینیم آیا صف
172
00:05:36,080 –> 00:05:36,720
173
00:05:36,720 –> 00:05:38,800
خالی است، بنابراین ما جلو می رویم و
174
00:05:38,800 –> 00:05:41,039
داده هایی را که در جلوی صف ما هستند ذخیره می کنیم،
175
00:05:41,039 –> 00:05:43,520
پس از آن، داده ها را با
176
00:05:43,520 –> 00:05:45,039
پیش بردن سر خود
177
00:05:45,039 –> 00:05:47,520
به موقعیت بعدی حذف می کنیم و سپس بررسی
178
00:05:47,520 –> 00:05:48,080
179
00:05:48,080 –> 00:05:50,560
می کنیم که آیا می توانیم صف خود را به حالت اولیه بازگردانیم یا خیر.
180
00:05:50,560 –> 00:05:51,199
181
00:05:51,199 –> 00:05:53,520
با بررسی اینکه آیا شاخص head
182
00:05:53,520 –> 00:05:54,639
برابر با شاخص دم
183
00:05:54,639 –> 00:05:57,840
است، مقداری از حافظه را ذخیره کنید، در این حالت این کار انجام نمیشود، بنابراین بیایید
184
00:05:57,840 –> 00:06:00,080
جلو برویم و اندازه را کاهش دهیم
185
00:06:00,080 –> 00:06