Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * fordit.c
- * Egész számokat olvas be egy listába, majd fordított
- * sorrendben kiírja azokat.
- */
- #ifdef _MSC_VER
- #define _CRT_SECURE_NO_WARNINGS 1
- #endif
- #include <iostream>
- #include "memtrace.h"
- struct lancElem {
- int adat; // egész adat
- double dummy[1000]; // teszteléshez kell, ne törölje!
- lancElem *kov; // pointer a következő láncelemre
- };
- /*
- * 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
- std::cout << p->adat << std::endl; // adat kiírása
- p = p->kov; // következő elemre
- }
- }
- /*
- * Felszabadítja a listát.
- * @param p - lista eleje
- */
- void felszabadit(lancElem *p) {
- lancElem *i = p;
- while (i != NULL) {
- lancElem *temp = i->kov; /* következő elem */
- delete i;
- i = temp;
- }
- i = NULL;
- }
- int main(void) {
- lancElem *kezdo = NULL; // üres lista
- int x;
- while (std::cin >> x) { // amíg van helyes input
- lancElem *tmp = befuz(kezdo, x);// befűzzük
- try {
- kezdo = tmp;
- } catch (const std::bad_alloc&) {
- std::cerr << "Nagy a baj: nincs elég memória" << std::endl;
- felszabadit(kezdo);
- return 1;
- }
- }
- kiir(kezdo); // kiírjuk
- felszabadit(kezdo); // felszabadítja a listát
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment