در این مطلب، ویدئو لیست پیوندی دایره ای در پایتون | بخش اول با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:17:14
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,060 –> 00:00:03,449
به یکی دیگر از مجموعه های آموزشی پایتون خوش آمدید،
2
00:00:03,449 –> 00:00:06,060
ما در حال ادامه بخش بعدی
3
00:00:06,060 –> 00:00:09,050
در سری خود در مورد ساختارهای داده پایتون هستیم،
4
00:00:09,050 –> 00:00:11,880
بنابراین در آخرین سری خود در مورد
5
00:00:11,880 –> 00:00:14,670
لیست پیوندی دوگانه صحبت کردیم و سپس در
6
00:00:14,670 –> 00:00:16,350
اولین مورد ما در مورد لیست پیوندی واحد صحبت کردیم،
7
00:00:16,350 –> 00:00:19,320
بنابراین ما به نوعی
8
00:00:19,320 –> 00:00:21,779
فهرست پیوندی واحد را مرور خواهیم کرد، اما ما
9
00:00:21,779 –> 00:00:24,449
شاهد تنوعی از آن
10
00:00:24,449 –> 00:00:26,760
نوع خاص از ساختار داده خواهیم بود، اکنون اگر سریال من را در لیست پیوندی واحد تماشا کرده باشید، اکنون
11
00:00:26,760 –> 00:00:30,269
در مورد یک لیست پیوندی دایره ای صحبت خواهیم کرد.
12
00:00:30,269 –> 00:00:32,640
13
00:00:32,640 –> 00:00:35,850
14
00:00:35,850 –> 00:00:39,210
لیست تقریباً مشابه یک
15
00:00:39,210 –> 00:00:43,020
لیست پیوندی است، به جز اینکه اکنون به جای اینکه نقطه ای به هیچ چیز نداشته باشیم، در واقع
16
00:00:43,020 –> 00:00:45,930
به آخرین گره خود در داخل لیست پیوند خورده خود برویم،
17
00:00:45,930 –> 00:00:48,360
18
00:00:48,360 –> 00:00:51,510
بنابراین یک جای خالی اساساً شما یک
19
00:00:51,510 –> 00:00:54,870
شی none را می شناسید اکنون کاری که باید
20
00:00:54,870 –> 00:00:57,180
انجام دهیم این است. ما آن گره نهایی
21
00:00:57,180 –> 00:01:00,510
را خواهیم داشت، ما نقطه اشاره گر آن را
22
00:01:00,510 –> 00:01:02,879
به سمت سر خواهیم داشت، بنابراین اکنون به یک معنا
23
00:01:02,879 –> 00:01:06,390
این دایره را ایجاد می کنیم که در آن آخرین
24
00:01:06,390 –> 00:01:11,520
گره به سمت سر ما برمی گردد و بنابراین
25
00:01:11,520 –> 00:01:12,990
چه کاری به ما امکان می دهد انجام دهیم. خیر است ما
26
00:01:12,990 –> 00:01:15,540
اساساً میتوانیم کل فهرست را طی کنیم
27
00:01:15,540 –> 00:01:17,250
و پس از رسیدن به پایان،
28
00:01:17,250 –> 00:01:20,909
دوباره به قسمت اول لیست خود باز میگردیم،
29
00:01:20,909 –> 00:01:23,240
بنابراین برخی از مزایا و
30
00:01:23,240 –> 00:01:25,979
معایب این
31
00:01:25,979 –> 00:01:28,049
نوع خاصی از ساختار داده را محافظت میکند و یکی از
32
00:01:28,049 –> 00:01:30,119
مزیتهای آن این است که که کل لیست را می
33
00:01:30,119 –> 00:01:33,060
توان از هر گره ای پیمایش کرد و به این
34
00:01:33,060 –> 00:01:35,670
معنی است که اساساً می توانیم از
35
00:01:35,670 –> 00:01:37,140
گره دوم شروع کنیم و می توانیم
36
00:01:37,140 –> 00:01:39,450
کل لیست را طی کنیم زیرا حتی اگر به
37
00:01:39,450 –> 00:01:42,600
گره نهایی ضربه بزنیم باز هم ما را به گره اول برمی گرداند.
38
00:01:42,600 –> 00:01:45,049
39
00:01:45,049 –> 00:01:48,950
اساساً پیمایش ادامه خواهد یافت،
40
00:01:48,950 –> 00:01:51,060
فهرستهای دایرهای ساختارهای دادهای مورد نیاز هستند،
41
00:01:51,060 –> 00:01:53,280
زمانی که ما میخواهیم به فهرستی
42
00:01:53,280 –> 00:01:55,409
در یک دایره یا حلقه دسترسی داشته
43
00:01:55,409 –> 00:01:58,649
باشیم که بدیهی است که از
44
00:01:58,649 –> 00:02:00,450
این نظر واضح است و بنابراین اگر بخواهیم از
45
00:02:00,450 –> 00:02:01,920
این ساختارهای داده خاص در
46
00:02:01,920 –> 00:02:03,329
حلقه ای است که ما مجبوریم
47
00:02:03,329 –> 00:02:08,520
به آن برویم، با وجود اینکه
48
00:02:08,520 –> 00:02:12,450
یک لیست پیوندی دایره ای مشخص است، ما هنوز هم می توانیم
49
00:02:12,450 –> 00:02:13,920
به راحتی آن را در حالت No پیش از آن طی کنیم،
50
00:02:13,920 –> 00:02:16,230
که در یک لیست پیوندی واحد و پایه امکان پذیر نیست.
51
00:02:16,230 –> 00:02:18,090
آنچه که آنها می
52
00:02:18,090 –> 00:02:20,100
گویند این است که حتی اگر بخواهیم
53
00:02:20,100 –> 00:02:22,260
به گره قبلی برویم، می توانیم به راحتی
54
00:02:22,260 –> 00:02:24,510
به آن گره دسترسی پیدا کنیم، زیرا ما
55
00:02:24,510 –> 00:02:26,160
اکنون این مکانیسم را داریم که ما
56
00:02:26,160 –> 00:02:28,230
را به جلو می برد و سپس در آن
57
00:02:28,230 –> 00:02:29,910
نقطه می توانیم ادامه دهیم.
58
00:02:29,910 –> 00:02:33,300
پیمایش می کنیم اما از این طریق بتوانیم به
59
00:02:33,300 –> 00:02:36,300
نقطه پایانی که می خواهیم برسیم و این
60
00:02:36,300 –> 00:02:37,890
یک مزیت است زیرا طبیعتاً با
61
00:02:37,890 –> 00:02:39,690
یک لیست پیوندی نمی توانیم این کار را انجام دهیم
62
00:02:39,690 –> 00:02:41,070
، در واقع باید برنامه خود را مجدداً راه اندازی
63
00:02:41,070 –> 00:02:42,840
کنیم و از
64
00:02:42,840 –> 00:02:44,970
ابتدا شروع کنیم. چه
65
00:02:44,970 –> 00:02:47,430
معایبی وجود دارد، اگرچه میتوانید
66
00:02:47,430 –> 00:02:48,630
تصور کنید که آنها کمی
67
00:02:48,630 –> 00:02:50,610
پیچیدهتر از یک لیست پیوندی واحد هستند، اکنون
68
00:02:50,610 –> 00:02:53,370
باید این نشانگر نهایی را حفظ کنیم، اما
69
00:02:53,370 –> 00:02:54,900
میدانید که در بیشتر موارد،
70
00:02:54,900 –> 00:02:58,580
معکوس کردن یک لیست دایرهای خیلی بد نیست.
71
00:02:58,580 –> 00:03:02,360
در مقایسه با یک لیست منفرد یا دارای
72
00:03:02,360 –> 00:03:05,100
پیوند دوگانه پیچیدهتر است و خواهیم دید که
73
00:03:05,100 –> 00:03:08,340
در چند ویدیو نگران نباشید اگر با
74
00:03:08,340 –> 00:03:10,980
دقت پیمایش نکنید، میتوانیم در یک
75
00:03:10,980 –> 00:03:13,769
حلقه نامحدود قرار بگیریم و ما اغلب این را خواهیم دید
76
00:03:13,769 –> 00:03:15,900
و بنابراین شما خواهید دید تغییر کد من را ببینید a
77
00:03:15,900 –> 00:03:17,370
کمی در مقایسه با یک لیست پیوندی منفرد،
78
00:03:17,370 –> 00:03:19,079
زیرا اکنون ما با این مشکل
79
00:03:19,079 –> 00:03:21,360
روبرو هستیم که در آن دیگر نمیتوانیم فقط این
80
00:03:21,360 –> 00:03:23,549
شرایط را داشته باشیم که میگوید میدانید در حالی که
81
00:03:23,549 –> 00:03:25,890
گره فعلی به انجام کاری ادامه میدهد،
82
00:03:25,890 –> 00:03:27,239
زیرا از نظر فنی، گره
83
00:03:27,239 –> 00:03:30,450
فعلی همیشه وجود خواهد داشت، زیرا قبلاً
84
00:03:30,450 –> 00:03:32,790
زمانی که به آخرین آن رسیده بود توجه داشته باشید و
85
00:03:32,790 –> 00:03:34,860
به هیچ چیز اشاره کرد که حلقه while ما
86
00:03:34,860 –> 00:03:36,870
خاتمه نمی یابد، اما با لیست پیوندی دایره ای
87
00:03:36,870 –> 00:03:38,400
، فقط به
88
00:03:38,400 –> 00:03:39,720
قسمت اصلی باز می گردد تا شرایط در
89
00:03:39,720 –> 00:03:42,090
واقع هرگز خاتمه پیدا نکند و سپس مانند یک
90
00:03:42,090 –> 00:03:44,519
لیست پیوندی دایره ای تکی و دوگانه
91
00:03:44,519 –> 00:03:46,980
نیز پشتیبانی نمی شود. دسترسی مستقیم به
92
00:03:46,980 –> 00:03:49,680
عناصر، بنابراین
93
00:03:49,680 –> 00:03:51,630
اگر موقعیت عنصر خاص خود را ندانیم، دوباره در برخی موارد باید از آن عبور کنیم
94
00:03:51,630 –> 00:03:55,410
و
95
00:03:55,410 –> 00:03:57,690
پس چرا از لیستهای پیوندی دایرهای به خوبی استفاده میکنیم،
96
00:03:57,690 –> 00:04:00,690
آنها اساساً در
97
00:04:00,690 –> 00:04:02,519
برنامههایی استفاده میشوند که کل
98
00:04:02,519 –> 00:04:04,590
فهرست در آن قابل دسترسی است. یک به یک و حلقهها را انجام میدهند تا
99
00:04:04,590 –> 00:04:06,630
سیستمعاملها از آن برای جابهجایی
100
00:04:06,630 –> 00:04:09,630
بین برنامههای مختلف در حال اجرا در
101
00:04:09,630 –> 00:04:11,940
یک حلقه دایرهای استفاده کنند، بنابراین این
102
00:04:11,940 –> 00:04:14,459
نمونهای از این است که ما از آن استفاده خواهیم کرد،
103
00:04:14,459 –> 00:04:16,858
همچنین توسط سیستم عاملهای عملیاتی استفاده میشود،
104
00:04:16,858 –> 00:04:18,839
فقط زمان را برای کاربران مختلف با کاربران به اشتراک میگذارند که
105
00:04:18,839 –> 00:04:22,140
عموماً کاربر از مکانیزم اشتراکگذاری زمان دور برگشت استفاده میکند
106
00:04:22,140 –> 00:04:24,900
و سپس
107
00:04:24,900 –> 00:04:27,090
بازیهای چند نفره نیز از لیستهای دایرهای برای
108
00:04:27,090 –> 00:04:27,840
جابهجایی بین
109
00:04:27,840 –> 00:04:30,540
بازیکنان در یک حلقه استفاده میکنند و بنابراین میدانید که
110
00:04:30,540 –> 00:04:32,340
اینها فقط چند مورد از موارد استفاده به خصوص
111
00:04:32,340 –> 00:04:35,130
اینکه چرا ممکن است بخواهید از یک
112
00:04:35,130 –> 00:04:37,590
لیست پیوند دایره ای استفاده کنید، من همچنین یک جدول عملکرد کوچک و زیبا
113
00:04:37,590 –> 00:04:39,690
را در آنجا برای شما قرار می دهم
114
00:04:39,690 –> 00:04:41,580
تا زمانی که در یادداشت ها وجود داشته باشد، بنابراین هر یک
115
00:04:41,580 –> 00:04:44,250
از روش ها نوع کاری را که هر روش انجام می دهد را داشته باشد
116
00:04:44,250 –> 00:04:46,199
و سپس همچنین پیچیدگی زمانی
117
00:04:46,199 –> 00:04:48,870
آن عملیات خاص، به طوری که
118
00:04:48,870 –> 00:04:52,850
گفته میشود اجازه دهید به خوبی شروع کنیم،
119
00:04:52,850 –> 00:04:54,990
بنابراین اولین کاری که
120
00:04:54,990 –> 00:04:55,949
میخواهیم انجام دهیم این است که شی گره خود را تعریف میکنیم
121
00:04:55,949 –> 00:04:59,760
و این اساساً
122
00:04:59,760 –> 00:05:02,580
مانند همه موارد دیگر خواهد بود.
123
00:05:02,580 –> 00:05:04,229
ویدیوها را مقداردهی اولیه می کنیم و
124
00:05:04,229 –> 00:05:06,570
می گوییم که
125
00:05:06,570 –> 00:05:09,479
قطعه داده ای دارد که به طور پیش فرض برابر با هیچ کدام نخواهد بود
126
00:05:09,479 –> 00:05:11,700
و سپس یک
127
00:05:11,700 –> 00:05:13,440
گره بعدی خواهد داشت، بنابراین این چیزی خواهد بود که
128
00:05:13,440 –> 00:05:15,540
دوباره این خواهد شد اساساً همان
129
00:05:15,540 –> 00:05:18,270
اشاره گر باشد که به گره بعدی اشاره می کند
130
00:05:18,270 –> 00:05:19,889
و بنابراین ما می گوییم که
131
00:05:19,889 –> 00:05:21,720
داده ها با خود داده برابر می شوند
132
00:05:21,720 –> 00:05:25,979
و سپس گره بعدی با
133
00:05:25,979 –> 00:05:28,940
گره بعدی برابر می شود درست مثل آن
134
00:05:28,940 –> 00:05:32,789
خوب و در فاصله کمی و سپس
135
00:05:32,789 –> 00:05:34,410
در نهایت کاری که میخواهیم
136
00:05:34,410 –> 00:05:37,169
انجام دهیم این است که لیست پیوندی یا لیست پیوندی دایرهای
137
00:05:37,169 –> 00:05:38,280
خود را انجام میدهیم، بنابراین یک لیست پیوندی دایرهای نامی به آن میدهیم
138
00:05:38,280 –> 00:05:43,080
و سپس از اینجا
139
00:05:43,080 –> 00:05:45,300
یک جزء اولیه آن را نیز تعریف
140
00:05:45,300 –> 00:05:48,000
میکنیم و بنابراین بگوییم
141
00:05:48,000 –> 00:05:51,900
یک زیرخط آن را تعریف کنیم و سپس خودمان را انجام می دهیم
142
00:05:51,900 –> 00:05:54,510
در این مورد
143
00:05:54,510 –> 00:05:57,570
هم یک سر و هم دم تعریف می کنیم که دم
144
00:05:57,570 –> 00:06:00,270
نامیده می شود، خواهیم دید که با تعریف
145
00:06:00,270 –> 00:06:01,979
این جزء انتهایی یا این
146
00:06:01,979 –> 00:06:04,110
جزء دم می توانیم بسازیم.
147
00:06:04,110 –> 00:06:06,960
عملیات حذف و درج اوه از
148
00:06:06,960 –> 00:06:10,080
ثابت ها، بنابراین اساساً oh of one،
149
00:06:10,080 –> 00:06:11,760
بنابراین کمی پیچیدگی
150
00:06:11,760 –> 00:06:14,370
بیشتری به لیست پیوندی دایره ای ما اضافه می کند، اما
151
00:06:14,370 –> 00:06:15,960
زمانی که عملیات خاصی را انجام می دهیم به نفع ما خواهد
152
00:06:15,960 –> 00:06:18,900
بود و بنابراین آنچه که ما
153
00:06:18,900 –> 00:06:21,000
انجام خواهیم داد این است که بگوییم Self dot head برابر با head
154
00:06:21,000 –> 00:06:26,099
و سپس sel است f نقطه پایان مساوی است و همچنین بسیار خوب است،
155
00:06:26,099 –> 00:06:28,830
بنابراین اجازه دهید چند روش را تعریف
156
00:06:28,830 –> 00:06:30,810
کنیم که
157
00:06:30,810 –> 00:06:34,289
پیمایش را انجام می دهیم، پایان را درج می کنیم و سپس
158
00:06:34,289 –> 00:06:36,060
شروع را درج می کنیم، چند گره را وارد می
159
00:06:36,060 –> 00:06:37,890
کنیم و سپس آن را برای
160
00:06:37,890 –> 00:06:39,870
این ویدیو خاتمه می دهیم. اولین مورد
161
00:06:39,870 –> 00:06:41,430
از لیست No ما عبور می کند،
162
00:06:41,430 –> 00:06:42,960
من می خواستم بگویم گره و
163
00:06:42,960 –> 00:06:44,430
قطعاً یک گره نیست، بنابراین
164
00:06:44,430 –> 00:06:47,370
ما لیست خود را طی می کنیم و بنابراین واقعاً آنچه
165
00:06:47,370 –> 00:06:49,440
باید انجام دهیم این است که باید
166
00:06:49,440 –> 00:06:52,280
اولین گره را به خوبی تعریف
167
00:06:52,280 –> 00:06:55,310
کنیم. به خودی خود سر بزنیم، بنابراین می گوییم
168
00:06:55,310 –> 00:07:00,030
گره فعلی برابر است با سر نقطه خود و در اینجا می رویم
169
00:07:00,030 –> 00:07:04,080
تا زمانی که گره بعدی وجود دارد ادامه دهید، گره بعدی
170
00:07:04,080 –> 00:07:08,220
171
00:07:08,220 –> 00:07:12,630
ادامه دهید و بنابراین کاری که ما می خواهیم انجام دهیم این است
172
00:07:12,630 –> 00:07:15,960
که می گوییم در حالی که گره فعلی نقطه
173
00:07:15,960 –> 00:07:19,860
گره بعدی به انجام کاری ادامه دهید اولین
174
00:07:19,860 –> 00:07:22,830
کار چاپ داده ها است، بنابراین می گوییم
175
00:07:22,830 –> 00:07:28,230
پرینت گره فعلی داده نقطه درست است و
176
00:07:28,230 –> 00:07:31,830
سپس می گوییم که باید گره فعلی را دوباره اختصاص
177
00:07:31,830 –> 00:07:34,590
دهیم و می گوییم گره فعلی
178
00:07:34,590 –> 00:07:37,470
نقطه گره بعدی، بنابراین این کار را انجام می دهد. دوباره آن را تخصیص دهید
179
00:07:37,470 –> 00:07:41,580
اما مشکل اینجاست دوباره به یاد داشته باشید تا
180
00:07:41,580 –> 00:07:45,000
اینجا را به یاد داشته باشید اگر آن نهایی را داشته باشم گره قرار
181
00:07:45,000 –> 00:07:47,610
است به اولین
182
00:07:47,610 –> 00:07:50,940
گره اشاره کند از خود بپرسید آیا این
183
00:07:50,940 –> 00:07:54,480
در واقع اشتباه خواهد بود نه زیرا هر گره
184
00:07:54,480 –> 00:07:56,190
یک گره بعدی خواهد داشت حتی اگر
185
00:07:56,190 –> 00:07:58,020
گره نهایی باشد زیرا گره نهایی
186
00:07:58,020 –> 00:08:00,650
فقط به اولین گره اشاره می کند، بنابراین
187
00:08:00,650 –> 00:08:03,900
در واقع این گره خواهد بود.
188
00:08:03,900 –> 00:08:06,540
اگر بخواهیم آن را همانطور که هست اجرا کنیم، یک حلقه بی نهایت ایجاد کنیم، باید
189
00:08:06,540 –> 00:08:08,400
یک شرط نهایی اضافه کنیم، می
190
00:08:08,400 –> 00:08:10,980
گوییم اگر گره فعلی باشد، بنابراین اگر گره ای
191
00:08:10,980 –> 00:08:14,850
که در آن قرار داریم برابر با گره سر باشد،
192
00:08:14,850 –> 00:08:17,970
به این معنی است که کل لیست را طی کرده ایم. بنابراین
193
00:08:17,970 –> 00:08:19,770
ما باید حلقه while خود