C Academy · Oppitunti

Linkitetyt listat

Opitte, miten linkitetyt listat toimivat ja miten toteutetaan lisäyksen ja poiston kaltaisia operaatioita.

Oppitunti 1/39 vaihetta

Linkitetyt listat on ilmainen C Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/3. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu C Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. C Academy-kurssilla on yhteensä 3 oppituntia.

Linkitetyt listat C:ssä

Linkitetty lista on dynaaminen tietorakenne, jossa alkiot (solmut) yhdistetään osoittimilla.

Tässä oppitunnissa opitte:

  • Miten linkitetyt listat toimivat.
  • Miten solmuja lisätään linkitettyyn listaan ja poistetaan siitä.
  • Mitkä ovat linkitettyjen listojen edut taulukoihin verrattuna.
Linkitetyt listat — kuvitus 1

Esimerkki: linkitetyn listan solmun määrittäminen

C:ssä linkitetyn listan solmu määritellään struct-rakenteen avulla. Se sisältää datakentän ja osoittimen seuraavaan solmuun.

#include <stdio.h>
#include <stdlib.h>

struct Node {
    int data;
    struct Node *next;
};

int main() {
    struct Node *head = NULL;
    return 0;
}

Solmun lisääminen alkuun

Kun haluatte lisätä uuden solmun linkitetyn listan alkuun:

  • Luokaa uusi solmu.
  • Asettakaa sen next-osoittimeksi nykyinen alkuosoitin.
  • Päivittäkää alkuosoitin.

Esimerkki: solmun lisääminen alkuun

Tämä ohjelma lisää uuden solmun linkitetyn listan alkuun.

#include <stdio.h>
#include <stdlib.h>

struct Node {
    int data;
    struct Node *next;
};

void insertAtBeginning(struct Node **head, int newData) {
    struct Node *newNode = (struct Node*)malloc(sizeof(struct Node));
    newNode->data = newData;
    newNode->next = *head;
    *head = newNode;
}

int main() {
    struct Node *head = NULL;
    insertAtBeginning(&head, 10);
    printf("Inserted: %d\n", head->data);
    return 0;
}

Solmun poistaminen

Kun haluatte poistaa solmun linkitetystä listasta:

  • Etsikää poistettava solmu.
  • Päivittäkää edellisen solmun next-osoitin.
  • Vapauttakaa poistetun solmun varaama muisti.

Esimerkki: solmun poistaminen

Tämä ohjelma poistaa solmun linkitetystä listasta.

#include <stdio.h>
#include <stdlib.h>

struct Node {
    int data;
    struct Node *next;
};

void deleteNode(struct Node **head, int key) {
    struct Node *temp = *head, *prev;
    if (temp != NULL && temp->data == key) {
        *head = temp->next;
        free(temp);
        return;
    }
    while (temp != NULL && temp->data != key) {
        prev = temp;
        temp = temp->next;
    }
    if (temp == NULL) return;
    prev->next = temp->next;
    free(temp);
}

int main() {
    struct Node *head = (struct Node*)malloc(sizeof(struct Node));
    head->data = 10;
    head->next = NULL;
    deleteNode(&head, 10);
    return 0;
}

Linkitettyjen listojen edut

Linkitetyillä listoilla on useita etuja taulukoihin verrattuna:

  • Dynaaminen koko (kokoa ei tarvitse määrittää etukäteen).
  • Tehokkaat lisäys- ja poistotoiminnot.
  • Kiinteän koon aiheuttamaa muistin haaskausta ei synny.

Yhteenveto

Tässä oppitunnissa opitte:

  • Mitä linkitetyt listat ovat ja miten ne toimivat.
  • Miten solmuja lisätään ja poistetaan.
  • Mitkä ovat linkitettyjen listojen edut taulukoihin verrattuna.

Seuraavaksi tutustutte pinoihin ja jonoihin C:ssä!

Linkitetyt listat — kuvitus 9
Aloita maksutta

Opi C tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
39
Oppitunnit
144

Usein kysytyt kysymykset

Onko oppitunti ”Linkitetyt listat” ilmainen?

Kyllä – oppitunnin ”Linkitetyt listat” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko C Academy-kurssin, päivitä CoddyKit PROhon. C Academy-kurssilla on yhteensä 3 oppituntia.

Mitä opin oppitunnilla ”Linkitetyt listat”?

Opitte, miten linkitetyt listat toimivat ja miten toteutetaan lisäyksen ja poiston kaltaisia operaatioita. Harjoittelet C Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni C Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin C Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/3.

Kuinka kauan ”Linkitetyt listat”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä C Academy-oppitunnilla?

Kyllä. Jokainen C Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Linkitetyt listat
  2. Pinot ja jonot
  3. Puut ja graafit
← Takaisin: C Academy