Skip to content

Instantly share code, notes, and snippets.

@tothandras
Last active August 29, 2015 13:56
Show Gist options
  • Save tothandras/9176433 to your computer and use it in GitHub Desktop.
Save tothandras/9176433 to your computer and use it in GitHub Desktop.
/*
* fordit.c
* Egész számokat olvas be egy listába, majd fordított
* sorrendben kiírja azokat.
*
*/
#include <iostream>
using namespace std;
typedef struct lancElem {
int adat; // egész adat
double dummy[1000]; // teszteléshez kell, ne törölje!
struct lancElem *kov; // pointer a következő láncelemre
} lancElem;
/*
* Felvesz egy uj elemet és a lista elejére fűzi.
* @param p - lista jelenlegi eleje
* @param i - új adat
* @return lista elejére mutató pointer. Hiba esetén NULL
*/
lancElem *befuz(lancElem *p, int i) {
lancElem *uj = new lancElem(); // új elem felvétele
if (uj != NULL) { // ha nincs hiba
uj->adat = i; // új adat
uj->kov = p; // lista elejére teszi
}
return uj;
}
/*
* Kiírja a listát.
* @param p - lista eleje
*/
void kiir(lancElem *p) {
while (p != NULL) { // amig el nem érjük a végét
cout << p->adat; // adat kiírása
p = p->kov; // következő elemre
}
}
/*
* Felszabadítja a listát.
* @param p - lista eleje
*/
void felszabadit(lancElem *p) {
if (p->kov != NULL)
felszabadit(p->kov);
delete p;
}
int main() {
lancElem *kezdo = NULL; // üres lista
int x;
while(scanf("%d", &x) == 1) { // amíg van helyes input
try {
lancElem *tmp = befuz(kezdo, x);// befűzzük
} catch (bad_alloc& ba) {
felszabadit(kezdo);
return 1;
}
}
kiir(kezdo); // kiírjuk
felszabadit(kezdo); // felszabadítja a listát
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment