Recent Changes - Search:

Oktatás

* Programozás 2
  + feladatsor
  + C feladatsor
  + Python feladatsor
  + GitHub oldal

* Szkriptnyelvek
  + feladatsor
  + quick link

* levelezősök
  + Adator. prog.
  + feladatsor
  + quick link

teaching assets


Félévek

* 2024/25/1
* archívum


Linkek

* kalendárium
   - munkaszüneti napok '20
* tételsorok
* jegyzetek
* szakdolgozat / PhD
* ösztöndíjak
* certificates
* C lang.
* C++
* C#
* Clojure
* D lang.
* Java
* Nim
* Scala


[ edit | logout ]
[ sandbox | passwd ]

C /

verem megvalósítása szétszórt ábrázolással

#############################

Vermet nagyon egyszerűen tudunk láncolt listával megvalósítani. A fejmutató mindig a verem tetején lévő elemre mutat, így az új elemet a lista elejére szúrjuk be, a verem tetején lévő elemet pedig a lista elejéről vesszük ki.

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

typedef struct listaelem
{
    int adat;
    struct listaelem *kov;
} LISTAELEM;

LISTAELEM *fej = NULL;

/* ************************************* */

// üres-e a verem
int empty() {
    return (fej == NULL);
}

// elem betétele
void push(int szam)
{
    LISTAELEM *uj = (LISTAELEM *)malloc(sizeof(LISTAELEM));

    uj->adat = szam;
    uj->kov = fej;
    fej = uj;
}

// visszaadja a verem tetején lévő elem értékét ÉS ki is veszi ezt az elemet a veremből
int pop()
{
    if (empty()) {
        // a feladattól függ, hogy egy ilyen esetet hogyan kezelünk le
        fprintf(stderr, "Hiba: üres a verem!");
        return -1;
    }
    // else, not empty

    int eredmeny = fej->adat;
    LISTAELEM *akt = fej;
    fej = fej->kov;
    free(akt);
    return eredmeny;
}

int main()
{
    int tomb[] = {1, 8, 5, 9, 2, 3, 4, 9};
    int meret = sizeof(tomb) / sizeof(int);
    int i;

    /* tömb elemei */
    printf("beszúrandó elemek: ");
    for (i = 0; i < meret; ++i)
    {
        printf("%d ", tomb[i]);
    }
    printf("\n");

    /* elemek beszúrása a verembe */
    for (i = 0; i < meret; ++i) {
        push(tomb[i]);
    }

    /* kivétel a veremből */
    puts("a verem elemei:");
    while (!empty())              // amíg nem üres, addig veszegetünk ki
    {
        printf("%d\n", pop());    // elem kivétele
    }

    return 0;
}

A fenti program a köv. kimenetet produkálja:

beszúrandó elemek: 1 8 5 9 2 3 4 9 
a verem elemei:
9
4
3
2
9
5
8
1
Cloud City

  

Blogjaim, hobbi projektjeim

* The Ubuntu Incident
* Python Adventures
* @GitHub
* heroku
* extra
* haladó Python
* YouTube listák


Debrecen | la France


[ edit ]

Edit - History - Print *** Report - Recent Changes - Search
Page last modified on 2015 May 09, 10:53