Oktatás * Programozás 2 * Szkriptnyelvek * levelezősök Félévek Linkek * kalendárium |
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 |
Blogjaim, hobbi projektjeim * The Ubuntu Incident [ edit ] |