smgr

elso_cpp

Feb 19th, 2015
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.76 KB | None | 0 0
  1. /*
  2. * fordit.c
  3. * Egész számokat olvas be egy listába, majd fordított
  4. * sorrendben kiírja azokat.
  5. */
  6.  
  7. #ifdef _MSC_VER
  8.     #define _CRT_SECURE_NO_WARNINGS 1
  9. #endif
  10.  
  11. #include <iostream>
  12. #include "memtrace.h"
  13.  
  14. struct lancElem {
  15.     int adat;                   // egész adat
  16.     double dummy[1000];         // teszteléshez kell, ne törölje!
  17.     lancElem *kov;              // pointer a következő láncelemre
  18. };
  19.  
  20. /*
  21. * Felvesz egy uj elemet és a lista elejére fűzi.
  22. * @param p - lista jelenlegi eleje
  23. * @param i - új adat
  24. * @return lista elejére mutató pointer. Hiba esetén NULL
  25. */
  26. lancElem *befuz(lancElem *p, int i) {
  27.     lancElem *uj = new lancElem;    // új elem felvétele
  28.     if (uj != NULL) {   // ha nincs hiba
  29.         uj->adat = i;   // új adat
  30.         uj->kov = p;    // lista elejére teszi
  31.     }
  32.     return uj;
  33. }
  34.  
  35. /*
  36. * Kiírja a listát.
  37. * @param p - lista eleje
  38. */
  39. void kiir(lancElem *p) {
  40.     while (p != NULL) {                     // amig el nem érjük a végét
  41.         std::cout << p->adat << std::endl;  // adat kiírása
  42.         p = p->kov;                         // következő elemre
  43.     }
  44. }
  45.  
  46. /*
  47. * Felszabadítja a listát.
  48. * @param p - lista eleje
  49. */
  50. void felszabadit(lancElem *p) {
  51.     lancElem *i = p;
  52.     while (i != NULL) {
  53.         lancElem *temp = i->kov; /* következő elem */
  54.         delete i;
  55.         i = temp;
  56.     }
  57.     i = NULL;
  58. }
  59.  
  60.  
  61. int main(void) {
  62.  
  63.     lancElem *kezdo = NULL;             // üres lista
  64.     int x;
  65.  
  66.     while (std::cin >> x) {      // amíg van helyes input
  67.         lancElem *tmp = befuz(kezdo, x);// befűzzük
  68.         try {
  69.             kezdo = tmp;
  70.         } catch (const std::bad_alloc&) {
  71.             std::cerr << "Nagy a baj: nincs elég memória" << std::endl;
  72.             felszabadit(kezdo);
  73.             return 1;
  74.         }
  75.     }
  76.  
  77.     kiir(kezdo);                        // kiírjuk
  78.  
  79.     felszabadit(kezdo);                 // felszabadítja a listát
  80.  
  81.     return 0;
  82. }
Advertisement
Add Comment
Please, Sign In to add comment