ТРЕТИ ТЕСТ

1. Отбележете верните твърдения за операторите и работата на програмата, дадена във файла list3.cpp на учебника.
+ Член-функциите на класа List имат достъп до частните членове на класа Link.
- Член-функциите на класа Link имат достъп до частните членове на класа List.

2. Дадена е следните дефиниции на класове:
    class Point { ... };
    class Circle : public Point { ... };
Отбележете верните твърдения за връзките между класовете Point и Circle:
+  Класът Circle е производен клас на класа Point.
- Класът Point е производен клас на класа Circle.

3. Даден е двусвързан списък, състоящ се от 3 елемента. Полето nt сочи към следващ елемент, а полето pv - предишен елемент от списъка.
    struct Item { Item *nt, *pv; int k; };
    Item *h;
h е указател за началото на списъка. Отбележете верните твърдения.
+ (h->nt)->nt е адресът на последния елемент от списъка.
- (h->nt)->nt е нулев адрес.

4. Отбележете верните дефиниции и твърдения за структури от данни и свързани списъци.
+ Листата на двоичните дървета нямат наследници.
- Двоичното дърво е линейна структура от данни.

5. Даден е аритметичния израз a/(b+c)*d-e*f и е представен като двоично дърво. Дадени са метод за обхождане и низ. Отбележете случайте, низът е подниз на генерираният от дадения вид обхождане на двоичното дърво.
+ длк: bc
- дкл: ef

6. Дадени са числа в скоби, от които трябва да се получи търсещо дърво. Отбележете случайте, когато числото извън скобите е максималното ниво на връх в полученото търсещо дърво.
+ (5,2,6,1) 2
- (8,10,5,6,1,9,15) 3

7. Дадена е думата МАТЕМАТИКА. Отбележете съответствията на срещащите се букви и крайни редици от 0 и 1, които са оптимални кодове от алгоритъма на Хъфман за тази дума.
+ К-0001 И-0000 М-10 А-01 Т-11 Е-001
- К-111 И-110 М-10 А-01 Т-001 Е-100

8. Дадени са дефиниции на класа One, обекти и указатели от този клас:
    class One {
    public:
        One() { data = 0; }
        int get_data() { return data; }
    private:
        int data;
    };
    One one, *p_one=&one, &r_one=one;
Отбележете правилното извикване на член-функцията get_data от главната функция main.
+ one.get_data()
- (*one)->get_data()

9. Дадени са следните дефиниции:
    double d=2.5;
    double *p_d1=&d, *p_d2=new double(0.5);
Отбележете верните оператори.
+ p_d1 = new double;
- *p_d2 = p_d1;

10. Дадени са двете рекурсивни функции:
    int f(int n)
    { if (n==0) return 2;
      return f(n-1) + g(n-1);
    }
    int g(int n)
    { if (n==0) return 1;
      return f(n-1) - g(n-1);
    }
Отбележете онези аритметични изрази, чиято стойност е степен на двойката.
+ f(0)
- 2 + g(0)

11. Даден е масив:
    int cats[5] = {5, 10, 5};
Отбележете изразите със стойност 10.
+ cats[0] + *(cats+2)
- cats + 1

12. Отбележете верните изрази със стандартни (вградени) операции в С++. Смятаме, че използваните променливи са дефинирани от необходимите за конкретната операция типове.
+ ala + bala
- && hohohoho