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 /

beszúrás a lista végére #1

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

A láncolt listát a végén bővítjük. Itt most csak egyetlen fejmutatót használunk, így bővítéskor mindig meg kell keresni a lista végét, ill. ugyanígy kell eljárnunk az utolsó elem törlésekor is.

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

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

LISTAELEM *fej = NULL;

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

void vegere_beszur(int szam)
{
    LISTAELEM *akt = fej;
    LISTAELEM *uj = (LISTAELEM *)malloc(sizeof(LISTAELEM));
    uj->adat = szam;
    uj->kov = NULL;

    if (fej == NULL) {
        fej = uj;
    }
    else
    {
        while (akt->kov != NULL) {
            akt = akt->kov;
        }
        akt->kov = uj;
    }
}

void utolso_torles()
{
    LISTAELEM *elozo = NULL;
    LISTAELEM *akt = fej;

    if (fej == NULL) {
        return;     /* a lanc ures */
    }
    /* else */
    while (akt->kov != NULL) {
        elozo = akt;
        akt = akt->kov;
    }

    if (elozo == NULL)  /* egyelemu */
    {
        free(akt);
        fej = NULL;
    }
    else {
        free(akt);
        elozo->kov = NULL;
    }
}

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

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

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 lista végére */
    for (i = 0; i < meret; ++i) {
        vegere_beszur(tomb[i]);
    }

    /* a listát a végén bővítettük, így az elemek sorrendje megmaradt */
    printf("a lista elemei: ");
    bejar(fej);

    /* utolsó elem törlése */
    puts("# utolsó elem törlése");
    utolso_torles();
    printf("a lista elemei: ");
    bejar(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: 1, 8, 5, 9, 2, 3, 4, 9, 
# utolsó elem törlése
a lista elemei: 1, 8, 5, 9, 2, 3, 4, 
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:23