Oktatás * Programozás 2 * Szkriptnyelvek * levelezősök Félévek Linkek * kalendárium |
C /
listába beszúrás rendezetten
A listát úgy építjük fel, hogy az új elemet egy rendezett listába tesszük be úgy, hogy a rendezettség az elem beszúrása után is megmaradjon. #include <stdio.h> #include <stdlib.h> typedef struct listaelem { int adat; struct listaelem *kov; } LISTAELEM; LISTAELEM *fej = NULL; /* ************************************* */ void rendezetten_beszur(int szam) { LISTAELEM *elozo = NULL; LISTAELEM *akt = fej; LISTAELEM *uj = (LISTAELEM *)malloc(sizeof(LISTAELEM)); uj->adat = szam; uj->kov = NULL; if (fej == NULL) { fej = uj; } else { while (!((akt == NULL) || (akt->adat > szam))) { elozo = akt; akt = akt->kov; } if (elozo != NULL) { elozo->kov = uj; } else { fej = uj; } uj->kov = akt; } } 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"); puts(""); /* elemek beszúrása rendezetten */ for (i = 0; i < meret; ++i) { rendezetten_beszur(tomb[i]); } /* a listában az elemek rendezetten szerepelnek */ 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, 2, 3, 4, 5, 8, 9, 9, |
Blogjaim, hobbi projektjeim * The Ubuntu Incident [ edit ] |