در این مطلب، ویدئو ساختارهای داده در پایتون: لیست های به هم پیوسته — حذف با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,030 –> 00:00:01,290
بسیار خوب در این ویدیو ما به
2
00:00:01,290 –> 00:00:03,510
بحث خود در مورد لیست های پیوندی ادامه
3
00:00:03,510 –> 00:00:05,660
می دهیم و
4
00:00:05,660 –> 00:00:09,120
عملیات حذف را در این ویدیو پوشش خواهیم داد، بنابراین
5
00:00:09,120 –> 00:00:09,990
اگر در ویدیوی قبلی
6
00:00:09,990 –> 00:00:11,849
لیست های پیوندی را ندیده اید،
7
00:00:11,849 –> 00:00:13,679
ساختار داده را معرفی کرده ایم و همچنین پوشش داده شده است.
8
00:00:13,679 –> 00:00:17,160
عملیات درج، مانند همیشه،
9
00:00:17,160 –> 00:00:18,930
کد این و همچنین همه
10
00:00:18,930 –> 00:00:20,850
ویدیوهای دیگر در این مجموعه در
11
00:00:20,850 –> 00:00:23,340
لینک github خواهد بود که باید در زیر
12
00:00:23,340 –> 00:00:26,279
در توضیحات این ویدیو پیدا شود، بنابراین
13
00:00:26,279 –> 00:00:29,130
اولین انواع حذف یک گره در یک
14
00:00:29,130 –> 00:00:30,570
لیست پیوندی منفرد یکی از مواردی است
15
00:00:30,570 –> 00:00:32,729
که به روش زیر مشخص شده است، بنابراین
16
00:00:32,729 –> 00:00:35,309
یک کلید یا یک فیلد داده به ما داده می شود و می خواهیم
17
00:00:35,309 –> 00:00:37,620
گره ای را که دارای فیلد داده است
18
00:00:37,620 –> 00:00:40,680
را با هر کلیدی که وجود دارد حذف کنیم، به
19
00:00:40,680 –> 00:00:42,570
عنوان مثال ممکن است لیستی داشته باشیم که
20
00:00:42,570 –> 00:00:44,370
شبیه به آن است. این و ما می خواهیم
21
00:00:44,370 –> 00:00:46,670
گره را با فیلد داده B حذف کنیم، اگر
22
00:00:46,670 –> 00:00:48,930
اینطور باشد، لیست را مرور
23
00:00:48,930 –> 00:00:51,239
می کنیم، گره را با آن فیلد داده
24
00:00:51,239 –> 00:00:54,629
در گره پیدا می کنیم و آن گره را از لیست حذف می کنیم
25
00:00:54,629 –> 00:00:56,370
و لیست حاصل در این
26
00:00:56,370 –> 00:00:58,190
حالت یک است. لیست به نظر می رسد بنابراین
27
00:00:58,190 –> 00:01:00,120
فقط برای اینکه این کار کمی آسانتر شود
28
00:01:00,120 –> 00:01:02,250
، فرض میکنیم که عناصر
29
00:01:02,250 –> 00:01:03,780
عناصر داده در لیست پیوندی منحصربهفرد هستند،
30
00:01:03,780 –> 00:01:05,909
بنابراین هیچ تکراری از A
31
00:01:05,909 –> 00:01:08,490
یا C یا هر چیز دیگری وجود ندارد و ما
32
00:01:08,490 –> 00:01:11,369
از آن به عنوان استفاده میکنیم. معیار ما برای
33
00:01:11,369 –> 00:01:14,490
حذف یک گره، بنابراین برای اینکه بتوانیم
34
00:01:14,490 –> 00:01:17,189
از این موضوع مراقبت کنیم، دو مورد
35
00:01:17,189 –> 00:01:19,830
باید در نظر گرفته شود، یکی این که گره ای که
36
00:01:19,830 –> 00:01:21,810
ما به آن نگاه می کنیم در واقع
37
00:01:21,810 –> 00:01:24,119
سر لیست است و حالت دیگر این است که
38
00:01:24,119 –> 00:01:25,890
گره ای که ما به آن نگاه می کنیم. این که ما میخواهیم
39
00:01:25,890 –> 00:01:28,409
حذف کنیم، هد نیست، بنابراین این دو
40
00:01:28,409 –> 00:01:30,810
مورد باید جداگانه بررسی شوند،
41
00:01:30,810 –> 00:01:33,390
زیرا حدس میزنم هد، جایی
42
00:01:33,390 –> 00:01:35,610
که سر است، کمی لبهای است،
43
00:01:35,610 –> 00:01:37,110
ما میخواهیم مطمئن شویم که آن را توضیح میدهیم.
44
00:01:37,110 –> 00:01:39,930
بنابراین بیایید نگاهی به موردی بیندازیم که
45
00:01:39,930 –> 00:01:42,060
در واقع زمانی که گره ای که می خواهیم
46
00:01:42,060 –> 00:01:44,070
حذف کنیم در واقع سر است، بنابراین در این
47
00:01:44,070 –> 00:01:45,840
مورد ما لیستی داریم که شبیه این است، می
48
00:01:45,840 –> 00:01:47,880
خواهیم این گره سر را حذف کنیم که در آن
49
00:01:47,880 –> 00:01:50,850
عنصر داده اساساً همان چیزی است که ما
50
00:01:50,850 –> 00:01:52,710
می خواهیم. انجام این کار گرهی است که به
51
00:01:52,710 –> 00:01:54,600
ما داده می شود و می گویند اگر این عنصر
52
00:01:54,600 –> 00:01:57,200
حاوی یک حذف شده است، همان گره سر است،
53
00:01:57,200 –> 00:02:00,329
کاری که میخواهیم انجام دهیم این است که اولین چیزی است
54
00:02:00,329 –> 00:02:03,030
که میخواهیم جایی را که نشانگر سر به
55
00:02:03,030 –> 00:02:04,140
آن اشاره میکند تغییر دهیم،
56
00:02:04,140 –> 00:02:06,509
بنابراین برای حذف این گره،
57
00:02:06,509 –> 00:02:08,250
دیگر سر لیست نیست، زیرا باید
58
00:02:08,250 –> 00:02:10,020
حذف شود. اولین کاری که میتوانیم
59
00:02:10,020 –> 00:02:11,420
انجام دهیم این است که میتوانیم
60
00:02:11,420 –> 00:02:14,030
نشانگر سر را به گره بعدی برداریم، بنابراین
61
00:02:14,030 –> 00:02:16,430
آن را در اینجا به این گره منتقل میکنیم و سپس
62
00:02:16,430 –> 00:02:20,540
میتوانیم ادامه دهیم و این اشارهگر را
63
00:02:20,540 –> 00:02:23,420
از حدس میزنم اشارهگر بعدی را از
64
00:02:23,420 –> 00:02:25,760
گره اصلی به نقطه دیگر برداریم. به هیچ وجه
65
00:02:25,760 –> 00:02:27,920
و سپس فقط این گره را برابر با
66
00:02:27,920 –> 00:02:30,200
null قرار دهید و اگر این کار را انجام دهیم،
67
00:02:30,200 –> 00:02:32,209
لیست حاصل برابر با این
68
00:02:32,209 –> 00:02:35,090
لیست است، بنابراین قبل از اینکه به
69
00:02:35,090 –> 00:02:37,459
مورد دیگر برویم، اجازه دهید در واقع
70
00:02:37,459 –> 00:02:41,510
این را کوچک کنیم و آن را کدگذاری کنیم تا چه کنیم do این
71
00:02:41,510 –> 00:02:44,630
است که ما تابعی به نام
72
00:02:44,630 –> 00:02:48,860
deletes node it’s class متد ایجاد می کنیم و خودش
73
00:02:48,860 –> 00:02:53,450
را می گیرد و همچنین عنصر داده ای
74
00:02:53,450 –> 00:02:54,560
که به دنبال آن هستیم در واقع
75
00:02:54,560 –> 00:02:57,709
این کلید را فراخوانی می کند، بنابراین کاری که می
76
00:02:57,709 –> 00:03:00,620
خواهیم انجام دهیم این است که اول از همه به ما می
77
00:03:00,620 –> 00:03:04,130
خواهیم بررسی کنیم که آیا گره سر همان است یا خیر گره
78
00:03:04,130 –> 00:03:06,290
باید حذف شود، بنابراین اجازه دهید در واقع فقط
79
00:03:06,290 –> 00:03:08,209
این متغیر را به نام گره فعلی تعریف
80
00:03:08,209 –> 00:03:10,160
کنیم که آن را برابر با سر لیست قرار می دهیم
81
00:03:10,160 –> 00:03:12,830
و در این مورد در اینجا ما می خواهیم
82
00:03:12,830 –> 00:03:16,430
بررسی کنیم که آیا گره فعلی هیچ نیست، بنابراین
83
00:03:16,430 –> 00:03:18,290
اگر اساساً لیست باشد خالی نیست
84
00:03:18,290 –> 00:03:21,260
و اگر دادههای گره فعلی در
85
00:03:21,260 –> 00:03:23,690
این مورد، گره فعلی سر است، اگر
86
00:03:23,690 –> 00:03:26,120
دادههای گره فعلی برابر با
87
00:03:26,120 –> 00:03:28,549
کلید مورد نظر ما باشد، باید
88
00:03:28,549 –> 00:03:30,290
مراحل خود را که
89
00:03:30,290 –> 00:03:34,549
در این تصویر در اینجا شرح دادهایم انجام دهیم. بنابراین
90
00:03:34,549 –> 00:03:36,590
اولین قدم این است که باید سر را تغییر دهیم
91
00:03:36,590 –> 00:03:39,739
تا به گره بعدی در لیست اشاره کند، بنابراین
92
00:03:39,739 –> 00:03:41,510
اجازه دهید جلو برویم و این کار را انجام دهیم، بنابراین کاری که انجام میدهیم این
93
00:03:41,510 –> 00:03:44,390
است که میگوییم سر خود نقطه برابر
94
00:03:44,390 –> 00:03:47,630
با گره بعدی است، بنابراین
95
00:03:47,630 –> 00:03:49,430
هد را برابر قرار میدهیم. به گره بعدی در لیست
96
00:03:49,430 –> 00:03:51,320
و سپس کار بعدی که میتوانیم انجام دهیم این
97
00:03:51,320 –> 00:03:54,140
است که میتوانیم بگوییم گره فعلی برابر با
98
00:03:54,140 –> 00:03:56,630
هیچ است و سپس میتوانیم آنقدر
99
00:03:56,630 –> 00:03:58,519
تنظیمات گره فعلی را برگردانیم که برابر با
100
00:03:58,519 –> 00:04:01,519
هیچ، اساساً از شر عنصر
101
00:04:01,519 –> 00:04:04,010
در اینجا خلاص شویم. سر را به عنصر بعدی
102
00:04:04,010 –> 00:04:05,690
در تنظیمات لیست منتقل کرده اید مساوی
103
00:04:05,690 –> 00:04:07,340
با هیچ، آن را به
104
00:04:07,340 –> 00:04:11,720
طور کلی از لیست حذف می کند، بنابراین همین است و به این صورت است
105
00:04:11,720 –> 00:04:13,970
که ما آن موقعیت را توضیح می دهیم، اکنون
106
00:04:13,970 –> 00:04:15,560
باید به مورد دیگری فکر
107
00:04:15,560 –> 00:04:17,478
کنیم که می خواهیم گره ای را که یک گره سر نیست حذف کنیم،
108
00:04:17,478 –> 00:04:20,870
بنابراین بیایید مثال اولیه را در نظر
109
00:04:20,870 –> 00:04:22,340
بگیریم که ما در ابتدا در نظر گرفتیم
110
00:04:22,340 –> 00:04:24,560
وقتی میخواهیم حذف کنیم،
111
00:04:24,560 –> 00:04:25,280
112
00:04:25,280 –> 00:04:28,160
مثلاً گره B را در نظر گرفتیم، بنابراین گره سر نیست، پس
113
00:04:28,160 –> 00:04:29,780
این لیست ما است، به ما این
114
00:04:29,780 –> 00:04:33,320
لیست داده میشود و یک فرآیند چند مرحلهای است،
115
00:04:33,320 –> 00:04:34,760
بنابراین اولین کاری که باید انجام دهیم آیا
116
00:04:34,760 –> 00:04:37,070
باید حدس بزنیم مرحله بعدی کاری که
117
00:04:37,070 –> 00:04:39,710
باید انجام دهیم این است که بفهمیم
118
00:04:39,710 –> 00:04:42,170
گره چیست، چه گره هایی هستند که قبل
119
00:04:42,170 –> 00:04:43,760
و بعد از گره ای هستند که می خواهیم
120
00:04:43,760 –> 00:04:47,930
حذف کنیم، بنابراین گره ای که قبل از B قرار می گیرد a است
121
00:04:47,930 –> 00:04:50,180
و سپس بدانیم که به دنبال آن است. بعد از B C است
122
00:04:50,180 –> 00:04:52,580
و ما میخواهیم انجام دهیم این است که میخواهیم
123
00:04:52,580 –> 00:04:54,740
نشانگر بعدی را که
124
00:04:54,740 –> 00:04:57,290
قبل از B است به نشانگر بعد از آن تغییر
125
00:04:57,290 –> 00:04:58,730
دهیم، این همان کاری است که اینجا
126
00:04:58,730 –> 00:05:00,169
انجام میدهد، بعد از اینکه به نوعی یکی را رد میکند به گره اشاره میکند.
127
00:05:00,169 –> 00:05:02,240
سپس
128
00:05:02,240 –> 00:05:04,040
کار بعدی که می خواهیم انجام دهیم این است که می خواهیم
129
00:05:04,040 –> 00:05:07,850
برای حرکت دادن نشانگر، اشاره گر بعدی را
130
00:05:07,850 –> 00:05:10,310
از B به گونه ای که اصلاً به چیزی اشاره نمی کند،
131
00:05:10,310 –> 00:05:11,750
زیرا از لیست خارج می شود
132
00:05:11,750 –> 00:05:14,210
و پس از انجام این کار، می توانیم این
133
00:05:14,210 –> 00:05:16,430
گره B را برابر هیچ قرار دهیم و آن را از لیست حذف کنیم
134
00:05:16,430 –> 00:05:20,150
و آن این است که بنابراین این
135
00:05:20,150 –> 00:05:22,550
روال کلی برای حذف یک
136
00:05:22,550 –> 00:05:24,770
عنصر از لیست است، اجازه دهید در واقع
137
00:05:24,770 –> 00:05:26,660
به کد بروید و ببینید که آیا واقعاً میتوانیم
138
00:05:26,660 –> 00:05:30,860
آن را پیادهسازی کنیم.
139
00:05:30,860 –> 00:05:32,630
140
00:05:32,630 –> 00:05:34,460
به
141
00:05:34,460 –> 00:05:37,220
جزئیات، باید گرهای را
142
00:05:37,220 –> 00:05:39,020
در لیست پیدا کنیم که شامل کلید
143
00:05:39,020 –> 00:05:41,240
مورد نظر ما است، بنابراین
144
00:05:41,240 –> 00:05:43,729
تا زمانی که
145
00:05:43,729 –> 00:05:45,950
نشانگر سر که از آن شروع میکنیم
146
00:05:45,950 –> 00:05:49,160
خالی نباشد و عنصر گره ای که
147
00:05:49,160 –> 00:05:50,840
ما در حال حاضر روی آن هستیم، عنصری نیست
148
00:05:50,840 –> 00:05:52,610
که به دنبال آن هستیم، ما می خواهیم
149
00:05:52,610 –> 00:05:54,260
در لیست حرکت کنیم، بنابراین از اینجا شروع می
150
00:05:54,260 –> 00:05:55,700
کنیم که نشانگرهای سر در لیست شروع شده
151
00:05:55,700 –> 00:05:57,800
اند، عنصر داده این
152
00:05:57,800 –> 00:05:59,510
گره است. برابر با کلیدی که ما به
153
00:05:59,510 –> 00:06:02,479
دنبال آن هستیم که B no است، بنابراین ما در امتداد و th حرکت می کنیم
154
00:06:02,479 –> 00:06:04,940
en ما به این یکی می رویم و می گوییم
155
00:06:04,940 –> 00:06:07,220
ok عنصر داده این گره
156
00:06:07,220 –> 00:06:08,870
برابر با کلیدی است که به دنبال
157
00:06:08,870 –> 00:06:11,870
آن هستیم بله همینطور است بنابراین ما آن را پیدا کردیم و در حالی
158
00:06:11,870 –> 00:06:14,270
که در حال حلقه زدن به آنچه می خواهیم انجام دهیم این
159
00:06:14,270 –> 00:06:16,970
است که می خواهیم برای پیگیری اینکه
160
00:06:16,970 –> 00:06:19,070
گره قبلی چیست، بنابراین همانطور که در حال حرکت
161
00:06:19,070 –> 00:06:20,690
در لیست هستیم، می دانیم که در کدام
162
00:06:20,690 –> 00:06:22,160
گره فعلی هستیم زیرا همراه
163
00:06:22,160 –> 00:06:25,190
با گره سر نشانگر سر حرکت می
164
00:06:25,190 –> 00:06:27,770
کنیم، اما همچنین می خواهیم گره را دنبال کنیم.
165
00:06:27,770 –> 00:06:29,540
همان چیزی را که ما روی آن هستیم ادامه میدهد، بنابراین
166
00:06:29,540 –> 00:06:31,760
میخواهیم آن را پیگیری کنیم، بنابراین کاری که
167
00:06:31,760 –> 00:06:34,490
میتوانیم انجام دهیم این است که بتوانیم یک متغیر
168
00:06:34,490 –> 00:06:37,610
تعریف کنیم.
169
00:06:37,610 –> 00:06:39,210
170
00:06:39,210 –> 00:06:43,139
171
00:06:43,139 –> 00:06:46,680
مساوی هیچ است و سپس کاری
172
00:06:46,680 –> 00:06:48,810
که می خواهیم انجام دهیم این است که می خواهیم
173
00:06:48,810 –> 00:06:51,630
از طریق این لیست تکرار کنیم در حالی که گره اصلی
174
00:06:51,630 –> 00:06:54,479
هیچ نیست و در حالی که فیلد داده
175
00:06:54,479 –> 00:06:56,099
گره هایی که با آنها روبرو می شویم با کلید برابر نیست
176
00:06:56,099 –> 00:07:00,270
، بنابراین گره فعلی برابر نیست.
177
00:07:00,270 –> 00:07:03,300
هیچ، در حالی که گره فعلی و فیلد داده
178
00:07:03,300 –> 00:07:05,940
گره فعلی برابر
179
00:07:05,940 –> 00:07:07,800
نیست کلیدی که به دنبال آن هستیم
180
00:07:07,800 –> 00:07:09,449
میخواهیم در امتداد کاری که
181
00:07:09,449 –> 00:07:11,490
میخواهیم انجام دهیم ادامه دهیم این است که میخواهیم بگوییم که
182
00:07:11,490 –> 00:07:13,050
گره قبلی برابر با گره فعلی است
183
00:07:13,050 –> 00:07:16,470
و گره فعلی اکنون با
184
00:07:16,470 –> 00:07:19,979
گره فعلی برابر است، بنابراین
185
00:07:19,979 –> 00:07:21,870
این نشانگر سر را در امتداد گره فعلی حرکت دهید،
186
00:07:21,870 –> 00:07:23,400
گره بعدی خواهد بود
187
00:07:23,400 –> 00:07:25,349
، گره قبلی همان چیزی است
188
00:07:25,349 –> 00:07:27,479
که قبلاً در آن بودیم و همانطور که
189
00:07:27,479 –> 00:07:28,919
در این لیست حرکت می کنیم،
190
00:07:28,919 –> 00:07:30,930
گره قبلی و همچنین گره
191
00:07:30,930 –> 00:07:33,449
فعلی را دنبال می کند. همچنین اکنون کاری که
192
00:07:33,449 –> 00:07:35,150
میخواهیم انجام دهیم این است که از حلقه خارج
193
00:07:35,150 –> 00:07:39,360
شدهایم و میخواهیم بررسی کنیم که آیا
194
00:07:39,360 –> 00:07:41,970
گره فعلی تهی شده است، بنابراین اگر
195
00:07:41,970 –> 00:07:43,770
گره فعلی تهی باشد، میدانیم
196
00:07:43,770 –> 00:07:45,990
که عنصر موجود نیست. t در لیستی
197
00:07:45,990 –> 00:07:48,210
که مرور کردیم، تمام
198
00:07:48,210 –> 00:07:50,039
عناصر موجود در لیست را بررسی کردیم و نمیتوانیم عنصری
199
00:07:50,039 –> 00:07:52,979
را با ورودی بگوییم E پیدا کنیم، بنابراین
200
00:07:52,979 –> 00:07:54,630
هر کدام از این موارد را که به دنبال آن هستیم مرور میکنیم
201
00:07:54,630 –> 00:07:56,580
، مثلاً ورودی e را بررسی میکنیم. فیلد داده E
202
00:07:56,580 –> 00:07:58,620
و ما تمام راه را طی می کنیم و
203
00:07:58,620 –> 00:08:01,469
با هیچ کدام مواجه نمی شویم اگر این اتفاق بیفتد می گوییم
204
00:08:01,469 –> 00:08:03,930
که عنصر t که باید حذف شود یک
205
00:08:03,930 –> 00:08:06,449
لیست نیست، بنابراین میخواهیم بگوییم اگر
206
00:08:06,449 –> 00:08:12,240
گره فعلی نیست یا وجود ندارد، آنچه میتوانیم
207
00:08:12,240 –> 00:08:13,800
بگوییم این است که فقط میتوانیم بگوییم بازگشت زیرا
208
00:08:13,800 –> 00:08:16,169
آن عنصر در لیست وجود ندارد
209
00:08:16,169 –> 00:08:19,05