>> [MUSIC PLAYING]
>> DOUG LLOYD: OK, belə Əlbəttə, bu point,
biz C. əsasları bir çox əhatə etdik Biz dəyişənlər, seriallarda haqqında çox bilmək
göstəricilər, bütün yaxşı stuff.
O bütün növ inşa edilir da, əsasları kimi görmək
lakin biz sağ, daha çox edə bilərsiniz?
Biz hər şeyi birləşdirə bilər birlikdə maraqlı yollarla.
>> Və belə ki, başlamaq edək ki, nə edək C bizə verir nə şaxələnmək,
və öz data yaratmaq başlayın Bu bina istifadə strukturları
birlikdə blokları bir şey etmək faydalı, həqiqətən dəyərli.
Biz bunu edə bilərsiniz bir yoldur kolleksiyaları haqqında danışmaq.
Belə ki, bu günə qədər məlumatların bir növ yaşadım kolleksiyalar təmsil strukturu
dəyərləri oxşar dəyərləri kimi.
Ki, bir sıra olacaq.
Biz integers kolleksiyaları var, və ya belə simvol və kolleksiyaları.
>> Structures də məlumatların düzmək olunur məlumat toplanması strukturu,
lakin bu dəyərlər kimi toplanması üçün deyil.
Bu adətən müxtəlif məlumat növləri qarışır birlikdə bir qutusuna daxilində.
Amma özü deyil birlikdə zəncir üçün istifadə
və ya birlikdə oxşar əlaqə bir sıra kimi maddələr.
Diziler üçün böyük element baxmaq, lakin geri çağırılması
bu, çox çətin ki, bir sıra daxil etmək üçün,
biz daxil etdiyiniz halda ki, serialın çox sonu.
>> Və ən yaxşı nümunə var ki, durub sırala edir.
Siz bizim video geri əgər durub növ,
bir çox var idi xərc olan cəlb
elementləri seçin və onlara keçmək bir şey uyğun şəkildə həyata
Sizin serialın ortasında daxil.
Diziler başqa bir əziyyət problem olan mətanət edir.
Biz bir sıra bəyan zaman, biz bunu bir shot almaq.
Biz istəyirik demək almaq Bu çox elementləri.
100 ola bilər, güc 1000 olun, bu güc
x Istifadəçi ki, bir sıra olduğu x olmaq tez və ya əmri bizə verdi
line.
>> Amma biz yalnız bir shot almaq, biz Mən, həqiqətən, daha sonra oh demək almaq deyil
101 ehtiyac, və ya x plus 20 lazımdır.
Çox gec, biz artıq bəyan etdik array, və biz 101 və ya almaq istəyirsinizsə x
plus 20, biz elan var tamamilə fərqli array,
array bütün elementləri surəti üzərində, sonra biz kifayət qədər var.
Biz bir daha yanlış olduqda, nə biz, həqiqətən, 102, və ya X Plus 40 lazımdır,
biz yenə bu var.
Belə ki, onlar çox mətanətli istəyirik bizim data boyutlandırma üçün,
lakin biz birlikdə bəzi birləşdirmək əgər biz artıq var əsasları
göstəricilər və strukturları haqqında öyrəndim, xüsusilə dinamik yaddaş istifadə
malloc ilə ayrılması, biz birlikdə bu ədəd qoya bilər
yeni data quruluşu yaratmaq üçün story biz demək bilər siyahısını bağlıdır
ki, bizə inkişaf imkan verir və dəyərlər toplusu shrink
və hər hansı sərf yer yoxdur.
>> Belə ki, yenə, biz bu fikri zəng Bu anlayışı, bir bağlı siyahı.
Xüsusilə, bu video biz istəyirik story bağlı siyahı söhbət,
və sonra başqa bir video biz danışmaq lazımdır haqqında ikiqat bağlı siyahıları olan
Burada mövzusunda yalnız bir variasiya edir.
Amma bir story bağlı siyahı qovşaqlarının ibarətdir,
qovşaqlarının yalnız mücərrəd term-- olan Mən zəng edirəm bir şey var
ki, bir növü var strukturu, əsasən, mən?
Yalnız bir node və bu zəng olacaq node iki üzvü, və ya iki sahələri var.
Bu adətən bir məlumat var tam, bir xarakter float,
və ya digər data type ola bilər Bir növü def ilə müəyyən etdik ki,.
Və bir pointer edir eyni tipli başqa node.
>> Beləliklə, biz daxilində iki şey var bu node, məlumat və bir pointer
başqa node.
Və siz görüntüləmək üçün başlamaq əgər Bu, bu barədə düşünmək olar
qovşaqlarının bir zəncir kimi ki, birlikdə bağlıdır.
Biz ilk node var, onu məlumat və bir pointer edir
ehtiva ikinci node üçün məlumat və üçüncü node bir göstərici.
Və belə ki, biz bunu bir zəng görə bağlı siyahı, onlar birlikdə bağlı edirik.
>> Bu xüsusi nə node struktur kimi baxmaq?
Yaxşı, siz bizim video geri əgər növü def ilə, xüsusi növlərini müəyyən,
bir quruluşu müəyyən edə bilərsiniz və oxşar strukturu müəyyən yazın.
struct sllist tyepdef, sonra mən özbaşına burada söz dəyər istifadə
həqiqətən hər hansı bir veri növü göstərir.
Siz bir tam və ya float keçə bilər Siz istədiyiniz hər hansı ola bilər.
Bu, sadəcə məhdud deyil integers, və ya kimi bir şey.
Belə ki, dəyəri yalnız bir ixtiyari deyil sonra data növü və bir pointer
eyni tipli başqa node.
>> İndi bir az tutmaq var Burada bir quruluş müəyyən ilə
zaman özünü sened strukturu var.
Mən müvəqqəti var Mənim strukturu adı.
Gün sonunda aydın zəng etmək istəyirəm
SLL node ki, nəticədə yeni Xarici görünüşüm müəyyən hissəsi ad,
amma SLL node istifadə edə bilməz bu ortasında.
varlıq səbəbi, mən var bir növü adlı SLL node yaradılmışdır
Mən burada bu final nöqtəsi hit qədər.
Ki, nöqtəsinə qədər, mən var başqa bir yolu bu veri növü müraciət.
>> Bu özünü sened data növü.
Bu, bir bir veri növü var bir data ehtiva edir quruluşu,
və başqa bir pointer eyni tipli quruluşu.
Beləliklə, mən müraciət etmək lazımdır Bu data type ən azı müvəqqəti olaraq,
belə müvəqqəti verilməsi struct sllist adı
Mənə sonra bir istəyirəm demək imkan verir başqa struct sllist göstərici,
bir struct sllist ulduz, və sonra Mən müəyyən etdikdən sonra,
Mən indi bu cür bir sll node zəng edə bilərsiniz.
>> Siz var görəcəksiniz nə ki, var burada müvəqqəti adı,
lakin burada daimi adı.
Bəzən görə bilərsiniz strukturunun anlayışlar,
Məsələn, ki deyil özünü sened ki,
Burada belirteci adı yoxdur.
Bu, sadəcə, typedef struct demək olardı buruq brace açmaq və sonra müəyyən edir.
Siz değilseniz Lakin struct özünü sened, bu kimi,
Bir müəyyən etmək lazımdır müvəqqəti növü adı.
Amma nəticədə indi biz bunu etdik ki,
biz yalnız müraciət edə bilərsiniz Bu qovşaqlarının, bu ədəd,
məqsədləri üçün SLL qovşaqlarının kimi Bu video qalan.
>> Bütün hüquqlar, belə ki, biz necə bilirik bir bağlı siyahı node yaratmaq.
Biz müəyyən etmək üçün necə bir bağlı siyahı node.
İndi biz başlamaq olacaq əgər məlumat toplamaq üçün istifadə,
əməliyyatlar bir neçə var, biz anlamaq və işləmək lazımdır.
Biz yaratmaq üçün necə bilmək lazımdır nazik hava həyata bağlı siyahı.
Heç bir siyahısı artıq varsa, biz bir başlamaq istəyirəm.
Beləliklə, biz lazımdır bir bağlı siyahısını yaratmaq üçün,
biz yəqin ki, axtarmaq lazımdır link siyahısı
biz aradığınız bir element tapa bilərsiniz.
Biz daxil etmək lazımdır siyahısına yeni şeylər,
Biz siyahısı inkişaf etmək istəyirəm.
Və eyni, biz etmək istəyirəm bizim siyahıdan şeyi silmək üçün,
Biz siyahısı shrink etmək istəyirəm.
Və sonunda bizim proqramları, xüsusilə
biz istəyirik ki, geri əgər dinamik yaddaş ayrılması
adətən bu siyahıları yaratmaq üçün, ki, yaddaş bütün azad etmək istəyirik
biz onunla iş Bitirdiğinizde.
Və belə ki, biz bir silmək lazımdır bir bütün bağlı siyahı swoop uğursuz.
Belə ki, ilə gedək bu əməliyyatları bəzi
və biz onları görüntüləmək bilər necə, xüsusi pseudocode kodu danışır.
Beləliklə, biz bir yaratmaq istəyirik siyahısını bağlı, belə ki, bəlkə biz
bir funksiyası müəyyən etmək istəyirəm Bu prototip ilə.
SLL node ulduz, yaratmaq, və mən keçən alıram bir arqument bəzi ixtiyari data
bir ixtiyari data növü, yenidən yazın.
Amma bu funksiyanı lazımdır returning-- alıram bir story üçün, mənə bir pointer qayıtmaq
bağlı siyahı node.
Yenə yaratmaq çalışdığınız nazik hava həyata bağlı siyahısı,
mən bir pointer lazımdır mən bitirdim ki, siyahısı.
>> Belə ki, burada cəlb addımlar hansılardır?
Bəli, mən ilk şey deyiləm edəcəyimiz dinamik deyil
yeni node üçün yer ayrılması.
Yenə nazik onu yaratmaq edirik hava, belə ki, biz bunun üçün malloc yer lazımdır.
Və əlbəttə ki, dərhal biz malloc sonra,
biz həmişə əmin olun bizim göstərici biz geri null əldə etməyib.
Biz cəhd çünki bir null göstərici hörmət,
biz əziyyət olacaq segfault və biz istəmirik.
>> Sonra biz sahəsində doldurmaq istəyirəm, biz dəyəri sahə başlamaq istəyirəm
və növbəti sahəsində başlamaq.
Və sonra biz nəhayət kimi to-- istəyirəm Biz istəyirik indicates-- funksiyası prototip
bir SLL node bir göstərici qayıtmaq üçün.
Belə ki, nə bu vizual kimi baxmaq?
Bəli, ilk biz dinamik olacaq yeni SLL node üçün yer ayırmaq,
belə ki, biz ki malloc-- bir vizual nümayəndəliyi
node biz yalnız yaratmışdır.
Və biz əmin olun Bu, bu halda null deyil
şəkil olmazdı Bu null idi up göstərilir,
biz yaddaş tökülmək olardı belə ki, biz orada getmək iyi.
Belə ki, indi biz C addım istəyirik, qovşaqlarının dəyəri sahə başlamaq.
Bəli, bu funksiya əsasında Mən burada istifadə edirəm zəng
Mən 6 keçmək istəyirəm kimi, görünür, mən dəyəri sahəsində 6 lazımdır.
İndi növbəti sahəsində başlamaq.
Yaxşı, nə mən orada gedirəm, heç bir şey doğru, yanında var,
Bu siyahıda yalnız bir şey.
Belə ki, siyahıda növbəti şey nədir?
>> Bu doğru, bir şey qeyd deyil.
Heç bir şey, belə ki, nə başqa orada var ki, bilirik anlayışı nothing-- var
heç bir şey göstəricilərinə?
Bu bəlkə biz istəyirik olmalıdır bir null göstərici qoymaq,
Mən null təmsil edəcəyik , yalnız bir qırmızı qutusu göstərici
Biz hər hansı bir daha getmək bilməz.
Biz sonra bir az görəcəksiniz kimi, biz nəhayət zəncir olacaq
oxlar birləşdirən birlikdə bu qovşaqlarının,
ancaq hit zaman qırmızı qutusu, ki, null
Biz hər hansı bir getmək bilməz ki, siyahıda sonu var.
>> Və nəhayət, biz yalnız istəyirəm bu node bir göstərici qayıtmaq.
Beləliklə, biz yeni zəng edəcəyik, və yeni qayıdacaqlar
belə ki, istifadə edilə bilər nə funksiyası yaratmışdır.
Belə ki, orada getmək, bir story yaratdıq nazik hava həyata bağlı siyahı node,
və indi biz ilə işləyə bilər bir siyahısı var.
>> İndi artıq biz deyək böyük bir zəncir var,
və biz bunu bir şey tapmaq istəyirəm.
Və biz olacaq bir funksiyası istəyirəm , doğru və ya yalan qayıtmaq asılı olaraq
dəyəri ki, siyahıda mövcud olub.
A funksiyası prototip, və ya ki, funksiyası üçün bəyannamə,
şeylərdir tapmaq bool kimi baxmaq bilər, və sonra iki dəlilləri keçmək istəyirəm.
>> ilk bir göstəricisidir bağlı siyahı ilk element.
Bu lazımdır, həqiqətən, bir şey deyil həmişə takip etmək istəyirəm,
və həqiqətən bir şey ola bilər ki, Hətta qlobal dəyişən qoydu.
Bir siyahısını yaratmaq, həmişə həmişə,
çox takip etmək istəyirəm siyahının ilk element.
Bütün digər müraciət edə bilərsiniz Bu yolla yalnız zəncir aşağıdakı elementləri,
göstəricilərinə saxlamaq olmadan hər bir element üçün bütöv.
Siz yalnız ilk takip lazımdır onlar bütün birlikdə zəncirlənmiş edirsinizsə.
>> Və sonra ikinci şey biz yenə keçən edirik
özbaşına some-- deyil nə data type biz istəyirik
orada axtarır daxilində inşallah siyahısında qovşaqlarının biri.
Belə ki, addımlar hansılardır?
Yaxşı, biz bunu ilk şey Biz köndələn pointer yaratmaq
siyahıları rəhbəri işarə.
Yaxşı, niyə ki, biz artıq biz nə yoxdur siyahıları başında bir göstərici var,
niyə biz yalnız ətrafında bir hərəkət yoxdur?
Bəli, mən yalnız dediyim kimi, bu, bizim üçün həqiqətən vacibdir
həmişə takip siyahısında ilk element.
Və belə ki, həqiqətən yaxşıdır ki, bir cüt yaratmaq,
və biz heç vaxt ətrafında hərəkət etmək üçün istifadə təsadüfən üz hərəkət, və ya həmişə
bəzi nöqtədə bir göstərici var sağ siyahının ilk element.
Belə ki, bir yaratmaq üçün daha yaxşıdır biz hərəkət etmək üçün istifadə ikinci.
>> Sonra biz yalnız olub müqayisə ki node dəyəri sahəsində
bu əgər biz axtarır, və nə deyil deyil, biz yalnız növbəti node hərəkət.
Və biz bunu saxlamaq üzərində və üzərində və üzərində,
Biz ya tapmaq qədər element, ya hit
null biz sonunda əldə etdiyiniz və siyahıdan bu yoxdur.
Bu inşallah bir zəng çalmaq lazımdır Sizə yalnız xətti axtarış,
biz yalnız onu təkrarlanmağa edirik bir story bağlı siyahı strukturu
əvəzinə bunu bir sıra istifadə.
>> Belə ki, burada bir nümunə var bir story bağlı siyahı.
Bu ibarətdir Beş qovşaqlarının və biz
rəhbəri pointer siyahısı adlanır siyahısı.
Biz nə istəyirik ilk şey yenidən ki, traversal pointer yaratmaq.
Beləliklə, biz indi iki göstəricilərinə var eyni şey ki, point.
>> İndi də burada qeyd etmədim trav üçün hər hansı bir yer malloc var.
Mən Trav malloc bərabərdir demədim bir şey ki, node artıq mövcuddur
yaddaş kosmik artıq mövcuddur.
Belə ki, mən, həqiqətən, edirəm bütün bu bir göstərici yaradılması.
Mən əlavə mallocing deyiləm space, indi iki göstəricilərinə var
eyni şey işarə.
>> Belə ki, 2 I arıyorum nədir?
Heç bir yaxşı, əvəzinə mən növbəti bir hərəkət olacaq.
Belə ki, əsasən, mən deyərdim ki, Trav növbəti Trav bərabərdir.
Mən heç bir, arıyorum nə 3.
Beləliklə, mən getmək davam edir vasitəsilə, nəhayət qədər
Mən arıyorum nə olan 6 almaq funksiyası zəng əsasında üçün
Mən üst var orada və mən bitirdim.
>> İndi element mən nə edirəm, əgər axtarır siyahı deyil
hələ də iş gedir?
Yaxşı, siyahı fark burada subtly müxtəlif
bu var başqa bir şey deyil bağlı siyahıları ilə əhəmiyyətli,
Siz qorumaq yoxdur onlara hər hansı bir xüsusi qaydada.
Istəyirsinizsə, bilərsiniz, lakin Əgər siz artıq qeyd ola bilər
biz takip saxlanılması deyilik ki, Biz nə sayı element var.
>> Və bir ticarət sort var ki Diziler ayələri bağlı siyahı ilə var,
biz yox edir Artıq təsadüfi giriş.
Biz yalnız istəyirəm, deyə bilmərəm 0th element getmək üçün,
və ya serialın 6-cı element, Mən bir sıra edə bilərsiniz.
Mən getmək istəyirəm deyə bilmərəm 0th element, və ya 6-cı element,
və ya bağlı siyahı 25 element, onlarla bağlı heç bir index var.
Və belə ki, həqiqətən etməz biz üçün bizim siyahısını saxlamaq əgər.
Siz istəyirsinizsə əlbəttə, lakin var
onlar lazımdır niyə heç bir səbəb hər hansı bir sırada saxlanılır.
Belə ki, yenə, bu cəhd edək və Bu siyahıda 6 tapa bilərsiniz.
Yaxşı, biz də başlayacaq başlayan, biz 6 tapmasanız
sonra biz tapmaq deyil davam 6, biz nəhayət burada almaq qədər.
Node Belə ki, hazırda Trav xal 8 olan və altı orada deyil.
>> Belə ki, növbəti addım olardı növbəti göstərici getmək üçün,
belə Trav növbəti trav bərabərdir demək.
Yaxşı, Trav növbəti, göstərilən orada qırmızı qutu null edir.
Belə ki, heç bir yerdə başqa var Bu nöqtədə getmək və
biz əldə etdik ki, bağlaya bilər bağlı siyahı sonunda,
6 orada deyil.
Və qaytarılacaqdır bu halda saxta.
>> OK, necə biz yeni daxil yoxdur bağlı siyahısına daxil node?
Beləliklə, biz yarada olduğunuz heç bir bağlı siyahısı,
lakin biz yəqin ki, istəyirəm bir zəncir qurmaq və
fərqli siyahıları bir dəstə yaradır.
Biz bir siyahısı var istəyirəm ki, , bu qovşaqlarının bir dəstə var
bir node ilə siyahıları bir dəstə.
Beləliklə, biz yalnız yaradın istifadə davam edə bilməz funksiyası biz indi, əvvəllər müəyyən biz
bir daxil istəyirəm artıq mövcuddur siyahısı.
>> Bu halda Belə ki, biz gedirik iki dəlilləri keçmək,
ki, baş göstərici biz əlavə etmək istədiyiniz siyahısı bağlıdır.
Bu qədər niyə Yenə ki mühüm həmişə ki,
, çünki takip bu, həqiqətən yeganə yolu biz var
bütün siyahısı müraciət etmək lazımdır yalnız ilk element bir göstərici tərəfindən.
Beləliklə, biz bir keçmək istəyirəm ilk element göstərici,
və nə dəyəri biz siyahısına əlavə etmək istəyirəm.
Və nəticədə bu funksiya bir pointer qayıtmaq üçün gedir
bir bağlı siyahı yeni rəhbəri.
>> Burada cəlb addımlar hansılardır?
Bəli, yalnız yaratmaq ilə kimi, biz dinamik ayırmaq lazımdır
yeni node üçün yer, və olun əmin biz yaddaş tökülmək deyil, yenə,
biz malloc istifadə etdiyiniz çünki.
Sonra biz yaşayır istəyirəm və node daxil
belə qoymaq, nə val node daxil edir.
Biz node daxil istədiyiniz bağlı siyahı başlayır.
>> Bir səbəb var ki, mən Bunu istəyirəm, və bu
ikinci alaraq dəyər ola bilər Burada video fasilə,
Mən istəyirəm ki, niyə haqqında düşünmək Bir bağlı əvvəlində daxil
siyahısı.
Yenə qeyd bu, həqiqətən deyil ki,
Biz hər hansı bir onu qorumaq, əgər məsələ üçün, belə ki, bəlkə bir ipucu var.
Və biz əgər olur nə gördüm istəyirdi to-- və ya yalnız bir ikinci
bundan zaman gedirdi axtarış vasitəsilə
nə ola bilər oldu biz çalışırıq, əgər baş
siyahının sonunda daxil etmək üçün.
Bir yoxdur, çünki siyahısı sonuna göstərici.
>> Belə ki, səbəb istəyirəm ki, əvvəlində daxil,
Mən dərhal bunu edə bilərsiniz, çünki.
Əvvəldə bir göstərici var, və biz ikinci vizual bu görəcəksiniz.
Amma sonunda daxil etmək istəyirsinizsə, Mən əvvəlində başlamaq lazımdır
bütün yol axır sonunda, və sonra tack.
Belə ki, deməkdir ki, siyahısı sonunda daxil
n bir o olacaq əməliyyat, geri gedir
bizim müzakirə hesablama mürəkkəblik.
Bu n əməliyyat bir o olmaq istiyorum siyahısı, böyük və daha böyük var kimi,
və daha böyük, daha olmaq lazımdır və bir tack daha çətin
sonunda.
Amma bu həmişə həqiqətən asandır başında bir şey tack,
Siz əvvəlində həmişə istəyirik.
>> Və biz yenə bu bir vizual görəcəksiniz.
Və sonra biz bir dəfə Bitirdiğinizde bir dəfə biz yeni node daxil etdik,
biz bizim pointer qayıtmaq istəyirəm bir bağlı siyahı yeni rəhbəri olan
biz daxil olduğunuz ildən başlayan, həqiqətən olacaq
biz yalnız yaradılmış node bir göstərici.
, Bu görüntüləmək imkan çünki mən kömək edirəm.
>> Belə ki, burada bizim siyahısı, bu ibarətdir Dörd elementləri, bir node, 15 olan
olan node işarə 9 ehtiva edən
13 olan bir node işarə, olan olan bir node işarə
Null var 10, növbəti göstərici kimi pointer
belə ki, siyahıda sonu var.
Beləliklə, biz bir əlavə etmək istəyirəm dəyəri 12 yeni node
bu başında siyahısı, biz nə etməliyəm?
Bəli, ilk biz kosmik malloc node, sonra biz orada 12 qoydu.
>> Belə ki, indi biz əldə etdik qərar nöqtəsi, sağ?
Biz bir neçə var göstəricilərinə ki, biz bilər
biz ilk olan hərəkət etməlidir, hərəkət?
12 point etmək lazımdır list-- yeni rəhbəri
və ya pardon, biz 12 etməlidir siyahı köhnə başçısı qeyd?
Yoxsa biz ki, demək lazımdır siyahısı indi 12 başlayır.
Bir fərq var var, və biz baxmaq lazımdır
həm də ikinci nə edir.
>> Amma bu səbəb olur sidebar üçün böyük mövzu,
olan ki biridir bağlı siyahıları ilə trickiest şeyi
göstəricilərinə təşkil edir Düzgün qaydada.
Siz sifariş şeyi hərəkət varsa, Siz təsadüfən son bilər
Siyahıya qalan orphaning.
Və burada bir misal var.
Belə ki, ideya ilə gedək of-- yaxşı, biz yalnız 12 yaratdıq.
Biz 12 olacaq bilirik siyahısı yeni rəhbəri
və niyə biz yalnız hərəkət etmir siyahısı göstərici var qeyd etmək.
>> OK, belə ki, yaxşı.
Belə ki, indi burada 12 növbəti nöqtəsi edir?
Mən vizual Göründüyü demək Bu 15 qeyd edəcək ki,
insanlar kimi, bu, bizim üçün həqiqətən aydın deyil.
Necə kompüter bilir?
Biz bir şey yoxdur Artıq 15 işarə edərək, sağ?
>> Biz 15 müraciət üçün heç bir imkanı itirdik.
Biz yeni arrow növbəti bərabər deyə bilmərəm bir şey var heç bir şey yoxdur.
Əslində, biz yetim etdik siyahısı istirahət
belə etməklə, biz təsadüfən zəncir qırıldı.
Və əlbəttə ki, biz bunu istəmirik.
>> Belə ki, geri getmək və yenə bu cəhd edək.
Bəlkə doğru şey 12 növbəti göstərici müəyyən edir
ilk siyahıda köhnə rəhbəri, sonra biz siyahısını üzərində hərəkət edə bilər.
Və əslində, ki, düzgün qaydada biz ki,
biz olduğunuzda riayət etmək lazımdır story bağlı siyahı ilə iş.
Biz həmişə qoşulmaq istəyirsinizsə siyahısına yeni element,
Biz bu cür almaq əvvəl dəyişdirilməsi mühüm addım
harada bağlı siyahı rəhbəridir.
Yenə belə bir fundamental şey, Biz bunun izini itirmək istəmirəm.
>> Belə ki, əmin etmək istəyirəm hər şey birlikdə chained edir
ki, pointer hərəkət əvvəl.
Və bu düzgün qaydada olacaq, olan siyahısına 12 birləşdirmək üçün,
sonra siyahısı 12 başlayır ki.
Biz siyahısı 12-da başlayacaq bildirib əgər sonra siyahısına 12 qoşulmaq üçün cəhd
biz artıq nə gördüm.
Biz səhvən siyahısı itirirlər.
>> OK, belə ki, daha bir şey haqqında danışmaq.
Biz xilas olmaq istəyirsinizsə, bütün bir dəfə siyahısını bağlıdır?
Yenə mallocing edirik Bütün bu yer, və biz
biz Bitirdiğinizde onu azad etmək lazımdır.
Belə ki, indi biz silmək üçün bütün bağlı siyahı.
Bəli, biz nə istəyirik?
>> Biz null göstərici əldə etdik, biz başqa, yalnız silmək, dayandırmaq istəyirəm
sonra siyahıdan qalan və məni azad.
Siyahıya qalan silmək, və sonra cari node pulsuz.
Kimi ki, səs nə, nə texnika danışdıq var
haqqında əvvəllər kimi ki, səs edir?
Sonra başqa hamı sil geri gəlmək və mənə silin.
>> Ki, recursion, biz etdik bir az kiçik problem,
Biz hər kəs silmək deyərək edirik başqa, onda siz mənə düzəlişlər edə bilərsiniz.
Və daha yol aşağı ki, node başqa hamı silmək, deyəcəklər.
Amma nəticədə biz almaq lazımdır siyahısı null point,
ki, bizim əsas işi var.
>> Belə ki, bu nəzər edək və bu iş ola bilər necə.
Belə ki, burada bizim siyahısı, bu eyni , biz yalnız söhbət siyahısı
və addımlar var.
Mətn bir çox burada var, lakin inşallah vizual kömək edəcək.
>> Beləliklə, biz yaxşıdır və mən də çəkdi Bizim yığını çərçivəsində illüstrasiya qədər
zəng çıxarıcı borular bizim video, və inşallah bu bütün
birlikdə neler sizə göstərəcək.
Belə ki, burada bizim pseudocode kodu var.
Biz null çatmaq varsa pointer, əks halda, dayandırmaq
Siyahıya qalan silmək, sonra cari node pulsuz.
Belə ki, indi, list-- biz istəyirik pointer
keçən 12 bal məhv etmək.
12 null göstərici deyil, belə ki, biz istəyirik Siyahıya qalan silmək üçün gedir.
>> Nə silinməsi edir bizə qalan cəlb?
Bəli, bu bir edilməsi deməkdir deyərək məhv zəng
15 ki başlanğıcıdır biz məhv etmək istəyən siyahısı istirahət.
Və belə zəng məhv 12 gözləməyə cür edir.
Bu gözləyir orada dondurulmuş oldu onun iş başa çatdırmaq üçün, 15 məhv çağırırıq.
>> Yaxşı, 15 null göstərici deyil, belə ki, demək olacaq, bütün sağ,
yaxşı, siyahıda qalan silin.
Siyahıya qalan başlayır 9, və biz yalnız lazımdır
bütün silmək qədər gözləyin ki, stuff, sonra geri gəlmək və mənə silin.
Yaxşı 9 yaxşı, demək olacaq, Mən bir null göstərici deyiləm
belə ki, burada istirahət siyahısını silin.
Və belə ki, cəhd və 13 məhv.
13, mən null göstərici deyiləm deyir Eyni şey, dollar keçir.
10, 10 null göstərici deyil bir null göstərici var,
lakin 10 deyil özü deyil null indi pointer,
və belə ki, çox dollar keçir.
>> İndi orada xal siyahısı həqiqətən some-- qeyd olardı
Mən image daha çox yer olsaydı, bəzi təsadüfi kosmik qeyd olardı
Biz nə bilmirəm ki.
Bu baxmayaraq null göstərici deyil, siyahısı, sanki indi null dəyərlər var müəyyən edilir.
Bu hüququ qırmızı qutu içərisində işarə edir.
Biz belə bir null göstərici çatdı biz dayandırmaq bilər, və biz tamamlayın.
>> Və belə ki, bənövşəyi çərçivəsində da, indi deyil Aktiv çərçivəsində var yığını üst,
lakin bunu edir.
Bir null göstərici əldə varsa, dayandırmaq.
Biz heç bir şey yoxdur, biz bir null göstərici azad edə bilməz,
Biz hər hansı bir malloc etməyib yer, və biz tamamlayın.
Ki, funksiyası çərçivəsində belə məhv və biz
biz tərk harada resume-- biz ala növbəti yüksək biri ilə off olan
Burada bu tünd mavi bir münasibət deyil.
Belə ki, biz off sol harada hüququ ala.
Biz qalan silindi siyahısı artıq, belə ki, indi biz istəyirik
cari qovşaqlarının azad gedir.
Belə ki, indi biz bu node azad edə bilər biz funksiyası sona gəlindi etdik.
Və belə ki, funksiyası çərçivəsində, məhv edilir və biz mavi bir qədər seçin.
>> Belə ki, mən artıq done-- sonra belə deyir siyahı qalan silmə belə
cari node azad.
İndi sarı çərçivəsində deyil geri yığını üst.
Gördüyünüz kimi, belə ki, biz indi istəyirik sağdan siyahısı məhv sol.
>> Bəs baş olardı Biz hər şeyi yanlış yol etmiş olur?
Sadəcə biz cəhd zaman kimi bir element əlavə edin.
Biz əgər zəncir, messed varsa biz göstəricilərinə əlaqə etməyib
Düzgün qaydada, biz əgər yalnız ilk element azad,
biz yalnız azad əgər siyahı başı, indi biz
müraciət heç bir yol var siyahısı istirahət.
Və belə ki, biz olardı yetim hər şey
biz nə olardı bir yaddaş sızıntısı çağırıb.
Siz bizim video geri varsa dinamik yaddaş ayrılması haqqında,
çox yaxşı bir şey deyil.
>> Kimi mən orada ifadə edərək, bir neçə əməliyyatları var
biz işləmək üçün istifadə etmək lazımdır ki, ilə səmərəli siyahısını bağlıdır.
Və, Mən bir çıxarılmışdır qeyd ola bilər bağlı olan bir element silmə
siyahısı.
Hesab edirəm ki, səbəbi bu, həqiqətən cür var edir
silmək üçün necə düşünmək çətin bir story olan bir element
bağlı siyahı.
Biz üzərində keçmək lazımdır siyahısı, bir şey olan
bir point biz almaq deməkdir bu node silmək istəyirəm
lakin üçün biz bunu belə etmək hər hansı bir məlumat itirmək yoxdur,
bu birləşdirmək lazımdır Burada burada node.
>> Beləliklə, mən yəqin ki, səhv etdi vizual baxımdan.
Beləliklə, biz əvvəlində istəyirik bizim siyahısı, biz vasitəsilə davam edirik
bu node silmək istəyirəm.
, Biz yalnız onu silmək əgər biz zəncir sınıq etdik.
Burada bu node başqa hər şey aiddir,
Burada həyata sonra zəncir var.
>> Belə ki, biz, həqiqətən, nə etmək lazımdır biz bu nöqtəyə almaq sonra,
biz bir geri addım etmək lazımdır, və bu node bu node üzərində qoşulmaq,
belə ki, biz sonra silə bilərsiniz ortada bir.
Amma story bağlı siyahıları deyil Bizə geri getmək üçün bir yol təqdim edir.
Belə ki, biz ya saxlamaq lazımdır iki göstəricilərinə və onları hərəkət
off addım sort, arxasında bir digər biz getmək, və ya bir nöqtəyə almaq kimi
və sonra vasitəsilə başqa göstərici göndərin.
Və siz bunu edə bilərsiniz kimi bir az messy əldə edə bilərsiniz.
Xoşbəxtlikdən, biz var başqa bir yolu ki həll etmək üçün,
biz ikiqat bağlı siyahıları haqqında danışmaq.
>> Mən Doug Lloyd deyiləm, bu CS50 edir.