Recent Changes - Search:

Oktatás

* Programozás 1
  + feladatsor
  + GitHub oldal

* Szkriptnyelvek
  + feladatsor
  + quick link

Teaching

* Programming 1 (BI)
  ◇ exercises
  ◇ quick link

* Scripting Languages
  ◇ exercises
  ◇ quick link

teaching assets


Félévek

* aktuális (2023/24/2)
* 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 /

beszúrás a lista elejére

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

Lista bővítése az elején, lista bejárása, lista mérete, keresés listában, lista törlése. Ha egy listát az elején bővítünk, akkor az elemek sorrendje megfordul (lásd verem).

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

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

LISTAELEM *fej = NULL;

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

void elejere_beszur(int szam)
{
    LISTAELEM *uj = (LISTAELEM *)malloc(sizeof(LISTAELEM));

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

void bejar(LISTAELEM *fej)
{
    LISTAELEM *akt = fej;

    while (akt != NULL)
    {
        printf("%d, ", akt->adat);
        akt = akt->kov;
    }
    printf("\n");
}

int lista_merete(LISTAELEM *fej)
{
    LISTAELEM *akt = fej;
    int cnt = 0;

    while (akt != NULL) {
        ++cnt;
        akt = akt->kov;
    }

    return cnt;
}

int benne_van(LISTAELEM *fej, int keresett)
{
    LISTAELEM *akt = fej;

    // while (!( (akt == NULL) || (akt->adat == keresett) ))
    while ( (akt != NULL) && (akt->adat != keresett) )
    {
        akt = akt->kov;
    }
    if (akt != NULL) return 1;
    // else
    return 0;
}

void felszabadit(LISTAELEM *akt)
{
    LISTAELEM *seged;

    while (akt != NULL)
    {
        seged = akt;
        akt = akt->kov;
        free(seged);
    }

    fej = NULL;
}

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");
    puts("");

    /* elemek beszúrása a lista elejére */
    for (i = 0; i < meret; ++i) {
        elejere_beszur(tomb[i]);
    }

    /* a listát elöl bővítettük, így az elemek sorrendje megfordult */
    printf("a lista elemei: ");
    bejar(fej);
    puts("");

    /* méret megállapítása */
    printf("a lista merete: %d\n", lista_merete(fej));

    /* keresés a listában */
    int keresett;
    keresett = 13;
    printf("%d benne van? %d\n", keresett, benne_van(fej, keresett));
    keresett = 4;
    printf("%d benne van? %d\n", keresett, benne_van(fej, keresett));

    /* lista felszámolása */
    puts("# lista elemeinek törlése");
    felszabadit(fej);
    printf("a lista merete: %d\n", lista_merete(fej));

    return 0;
}

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

beszúrandó elemek: 1 8 5 9 2 3 4 9 

a lista elemei: 9, 4, 3, 2, 9, 5, 8, 1, 

a lista merete: 8
13 benne van? 0
4 benne van? 1
# lista elemeinek törlése
a lista merete: 0
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, 09:57