C Academy · Lekcja

Stosy i kolejki

Proszę zrozumieć struktury danych stosu (LIFO) i kolejki (FIFO) oraz ich zastosowania.

Lekcja 2 z 310 kroki

Stosy i kolejki to bezpłatna lekcja C Academy na CoddyKit. To lekcja 2 z 3. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C Academy zawiera 3 lekcji w sumie.

Stosy i kolejki w języku C

Stosy i kolejki to liniowe struktury danych używane do przechowywania danych i zarządzania nimi.

W tej lekcji dowiedzą się Państwo:

  • Jak działają stosy (LIFO — ostatni wchodzi, pierwszy wychodzi).
  • Jak działają kolejki (FIFO — pierwszy wchodzi, pierwszy wychodzi).
  • Jak implementować stosy i kolejki w języku C.
Stosy i kolejki — ilustracja 1

Czym jest stos?

Stos działa zgodnie z zasadą ostatni wchodzi, pierwszy wychodzi (LIFO).

Operacje:

  • Push - Dodaje element na wierzchołek stosu.
  • Pop - Usuwa element ze szczytu stosu.
  • Peek - Wyświetla element na szczycie bez usuwania go.

Przykład: implementowanie stosu

Ten program pokazuje operacje na stosie za pomocą tablicy.

#include <stdio.h>
#define MAX 5

int stack[MAX], top = -1;

void push(int value) {
    if (top == MAX - 1) {
        printf("Stack Overflow\n");
    } else {
        stack[++top] = value;
    }
}

int pop() {
    if (top == -1) {
        printf("Stack Underflow\n");
        return -1;
    } else {
        return stack[top--];
    }
}

int main() {
    push(10);
    push(20);
    printf("Popped: %d\n", pop());
    return 0;
}

Czym jest kolejka?

Kolejka działa zgodnie z zasadą pierwszy wchodzi, pierwszy wychodzi (FIFO).

Operacje:

  • Enqueue - Dodaje element na końcu kolejki.
  • Dequeue - Usuwa element z początku kolejki.
  • Peek - Wyświetla pierwszy element bez usuwania go.

Przykład: implementowanie kolejki

Ten program pokazuje operacje na kolejce za pomocą tablicy.

#include <stdio.h>
#define MAX 5

int queue[MAX], front = -1, rear = -1;

void enqueue(int value) {
    if (rear == MAX - 1) {
        printf("Queue Overflow\n");
    } else {
        if (front == -1) front = 0;
        queue[++rear] = value;
    }
}

int dequeue() {
    if (front == -1 || front > rear) {
        printf("Queue Underflow\n");
        return -1;
    } else {
        return queue[front++];
    }
}

int main() {
    enqueue(10);
    enqueue(20);
    printf("Dequeued: %d\n", dequeue());
    return 0;
}

Kolejka cykliczna

Kolejka cykliczna eliminuje ograniczenia zwykłej kolejki, ponownie wykorzystując wolne miejsce.

Operacje pozostają takie same, ale zawijają się na końcu tablicy i zaczynają ponownie od jej początku.

Przykład: kolejka cykliczna

Ten program pokazuje implementację kolejki cyklicznej.

#include <stdio.h>
#define MAX 5

int queue[MAX], front = -1, rear = -1;

void enqueue(int value) {
    if ((rear + 1) % MAX == front) {
        printf("Queue Overflow\n");
    } else {
        if (front == -1) front = 0;
        rear = (rear + 1) % MAX;
        queue[rear] = value;
    }
}

int dequeue() {
    if (front == -1) {
        printf("Queue Underflow\n");
        return -1;
    }
    int data = queue[front];
    if (front == rear) {
        front = rear = -1;
    } else {
        front = (front + 1) % MAX;
    }
    return data;
}

int main() {
    enqueue(10);
    enqueue(20);
    printf("Dequeued: %d\n", dequeue());
    return 0;
}

Zastosowania stosów i kolejek

Stosy są używane do:

  • Zarządzania wywołaniami funkcji (rekurencja).
  • Obsługi operacji cofania i ponawiania.
  • Obliczania wartości wyrażeń.

Kolejki są używane do:

  • Planowania zadań w systemach operacyjnych.
  • Zarządzania żądaniami na serwerach internetowych.
  • Przesyłania danych w sieciach.

Podsumowanie

W tej lekcji poznali Państwo:

  • Jak działają stosy i kolejki.
  • Jak implementować operacje na stosach i kolejkach.
  • Zastosowania stosów i kolejek.

W następnej części przyjrzymy się drzewom i grafom w języku C!

Stosy i kolejki — ilustracja 10
Bezpłatny start

Ucz się C dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
39
Lekcje
144

Często zadawane pytania

Czy lekcja „Stosy i kolejki” jest bezpłatna?

Tak — pełny tekst „Stosy i kolejki” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C Academy, przejdź na CoddyKit PRO. Kurs C Academy zawiera 3 lekcji w sumie.

Co nauczysz się w „Stosy i kolejki”?

Proszę zrozumieć struktury danych stosu (LIFO) i kolejki (FIFO) oraz ich zastosowania. Ćwiczysz C Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć C Academy?

Nie wymagamy żadnego doświadczenia. C Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 3.

Ile czasu zajmuje lekcja „Stosy i kolejki”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji C Academy?

Tak. Każda lekcja C Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Listy jednokierunkowe
  2. Stosy i kolejki
  3. Drzewa i grafy
← Powrót do C Academy