Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Monimutkainen Tietorakenne | Edistyneet Structin Käyttötavat
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
C-Rakenteiden Hallinta

bookMonimutkainen Tietorakenne

Tietorakenteet mahdollistavat ohjelmoijille tiedon tallentamisen, järjestämisen ja hallinnan tehokkaasti. Yksinkertaiset taulukot tai peräkkäiset tallennusmuodot eivät usein riitä monimutkaisiin tehtäviin, minkä vuoksi käytetään rakenteita kuten listoja, puita ja hajautustauluja.

C-kielessä rakenteet (struct) tarjoavat joustavan tavan toteuttaa monia näistä tietorakenteista.

Linkitetyt listat

Linkitetty lista on hyödyllinen, kun alkioiden määrä voi muuttua dynaamisesti. Jokainen solmu sisältää tietoa ja osoittimen seuraavaan solmuun.

Esimerkkisolmun rakenne:

struct Node {
    int data;           // data in node
    struct Node* next;  // pointer to next node
};

Jokainen solmu sisältää data-kentän ja next-osoittimen. Tämän ansiosta voit lisätä tai poistaa alkioita missä tahansa kohdassa listaa ilman, että koko rakennetta tarvitsee järjestellä uudelleen, toisin kuin taulukoissa.

Hajautustaulu

Hajautustaulujen avulla tietoja voidaan hakea nopeasti avaimen avulla. Hajautusfunktio muuntaa avaimen taulukon indeksiksi, johon arvo tallennetaan.

Esimerkki hajautustaulun toteutuksesta:

struct Node {
    char* key;          // key
    int value;          // value
    struct Node* next;  // pointer to next node
};

struct HashTable {
    struct Node** table; // array of node pointers
    int size;            // table size
};

unsigned int hashFunction(char* key, int size) {
    unsigned int hash = 0;
    while (*key) {
        hash += *key++;
    }
    return hash % size;
}

Jokainen hajautustaulun alkio on linkitetyn listan solmu, joka sisältää avaimen ja arvon. Hajautusfunktio muuntaa avaimen taulukon indeksiksi, mikä mahdollistaa nopeat haut myös suurilla tietomäärillä.

Puut

Puut soveltuvat hierarkkisen datan käsittelyyn, nopeaan hakuun, lisäämiseen ja poistamiseen.

Binääripuu on puu, jossa jokaisella solmulla voi olla enintään kaksi lasta: vasen ja oikea.

Esimerkki binääripuun toteutuksesta:

struct node
{
	int data;
	struct node* left; 
	struct node* right; 
};

Solmu voi olla lastensa vanhempi ja samalla oman vanhempansa lapsi. Binääripuut mahdollistavat tehokkaan datan järjestämisen ja nopean haun loogisen "vasen-oikea"-rakenteensa ansiosta.

Pino

Käytetään verkkojen ja suhteiden mallintamiseen.

Pino on tietorakenne, johon alkioita lisätään (push) ja poistetaan (pop) LIFO-periaatteen mukaisesti - (Last In, First Out).

Esimerkkipino taulukon avulla:

// Stack structure
typedef struct {
    int data[MAX_SIZE]; 
    int top;
} Stack;

MAX_SIZE - the maximum number of elements a stack can contain.

// Push an element onto the stack
void push(Stack *stack, int value) {
    stack->data[++stack->top] = value;  // Increment top and add the element
    printf("Element %d pushed onto the stack\n", value);
}

// Pop an element from the stack
int pop(Stack *stack) {
    int value = stack->data[stack->top--];  // Retrieve the element and decrement top
    printf("Element %d popped from the stack\n", value);
    return value;
}

Elementti lisätään pinon yläosaan (top). Pinot mahdollistavat elementtien nopean lisäämisen ja poistamisen, ja viimeksi lisätty elementti poistetaan ensimmäisenä.

Rakenteiden käyttö C:ssä mahdollistaa joustavien ja tehokkaiden tietorakenteiden, kuten taulukoiden, linkitettyjen listojen, hajautustaulukoiden, puiden ja pinojen, luomisen. Jokainen rakenne on optimoitu tiettyihin tehtäviin, mikä tekee ohjelmista järjestelmällisempiä ja tehokkaampia.

1. Mikä on linkitetyn listan tärkein etu taulukkoon verrattuna?

2. Binaaripuussa solmua, jolla on omia lapsia, kutsutaan:

question mark

Mikä on linkitetyn listan tärkein etu taulukkoon verrattuna?

Select the correct answer

question mark

Binaaripuussa solmua, jolla on omia lapsia, kutsutaan:

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 4

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

bookMonimutkainen Tietorakenne

Pyyhkäise näyttääksesi valikon

Tietorakenteet mahdollistavat ohjelmoijille tiedon tallentamisen, järjestämisen ja hallinnan tehokkaasti. Yksinkertaiset taulukot tai peräkkäiset tallennusmuodot eivät usein riitä monimutkaisiin tehtäviin, minkä vuoksi käytetään rakenteita kuten listoja, puita ja hajautustauluja.

C-kielessä rakenteet (struct) tarjoavat joustavan tavan toteuttaa monia näistä tietorakenteista.

Linkitetyt listat

Linkitetty lista on hyödyllinen, kun alkioiden määrä voi muuttua dynaamisesti. Jokainen solmu sisältää tietoa ja osoittimen seuraavaan solmuun.

Esimerkkisolmun rakenne:

struct Node {
    int data;           // data in node
    struct Node* next;  // pointer to next node
};

Jokainen solmu sisältää data-kentän ja next-osoittimen. Tämän ansiosta voit lisätä tai poistaa alkioita missä tahansa kohdassa listaa ilman, että koko rakennetta tarvitsee järjestellä uudelleen, toisin kuin taulukoissa.

Hajautustaulu

Hajautustaulujen avulla tietoja voidaan hakea nopeasti avaimen avulla. Hajautusfunktio muuntaa avaimen taulukon indeksiksi, johon arvo tallennetaan.

Esimerkki hajautustaulun toteutuksesta:

struct Node {
    char* key;          // key
    int value;          // value
    struct Node* next;  // pointer to next node
};

struct HashTable {
    struct Node** table; // array of node pointers
    int size;            // table size
};

unsigned int hashFunction(char* key, int size) {
    unsigned int hash = 0;
    while (*key) {
        hash += *key++;
    }
    return hash % size;
}

Jokainen hajautustaulun alkio on linkitetyn listan solmu, joka sisältää avaimen ja arvon. Hajautusfunktio muuntaa avaimen taulukon indeksiksi, mikä mahdollistaa nopeat haut myös suurilla tietomäärillä.

Puut

Puut soveltuvat hierarkkisen datan käsittelyyn, nopeaan hakuun, lisäämiseen ja poistamiseen.

Binääripuu on puu, jossa jokaisella solmulla voi olla enintään kaksi lasta: vasen ja oikea.

Esimerkki binääripuun toteutuksesta:

struct node
{
	int data;
	struct node* left; 
	struct node* right; 
};

Solmu voi olla lastensa vanhempi ja samalla oman vanhempansa lapsi. Binääripuut mahdollistavat tehokkaan datan järjestämisen ja nopean haun loogisen "vasen-oikea"-rakenteensa ansiosta.

Pino

Käytetään verkkojen ja suhteiden mallintamiseen.

Pino on tietorakenne, johon alkioita lisätään (push) ja poistetaan (pop) LIFO-periaatteen mukaisesti - (Last In, First Out).

Esimerkkipino taulukon avulla:

// Stack structure
typedef struct {
    int data[MAX_SIZE]; 
    int top;
} Stack;

MAX_SIZE - the maximum number of elements a stack can contain.

// Push an element onto the stack
void push(Stack *stack, int value) {
    stack->data[++stack->top] = value;  // Increment top and add the element
    printf("Element %d pushed onto the stack\n", value);
}

// Pop an element from the stack
int pop(Stack *stack) {
    int value = stack->data[stack->top--];  // Retrieve the element and decrement top
    printf("Element %d popped from the stack\n", value);
    return value;
}

Elementti lisätään pinon yläosaan (top). Pinot mahdollistavat elementtien nopean lisäämisen ja poistamisen, ja viimeksi lisätty elementti poistetaan ensimmäisenä.

Rakenteiden käyttö C:ssä mahdollistaa joustavien ja tehokkaiden tietorakenteiden, kuten taulukoiden, linkitettyjen listojen, hajautustaulukoiden, puiden ja pinojen, luomisen. Jokainen rakenne on optimoitu tiettyihin tehtäviin, mikä tekee ohjelmista järjestelmällisempiä ja tehokkaampia.

1. Mikä on linkitetyn listan tärkein etu taulukkoon verrattuna?

2. Binaaripuussa solmua, jolla on omia lapsia, kutsutaan:

question mark

Mikä on linkitetyn listan tärkein etu taulukkoon verrattuna?

Select the correct answer

question mark

Binaaripuussa solmua, jolla on omia lapsia, kutsutaan:

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 4
some-alt