C – Povezane liste

#include <iostream>
using namespace std;

struct Node {
    int podaci;     
    Node* sledeci;
};

void dodajNaPocetak(Node*& head, int noviPodatak) {
    Node* novi = new Node();
    novi->podaci = noviPodatak;
    novi->sledeci = head;
    head = novi;
}


void prikaziListu(Node* head) {
    Node* temp = head;
    while (temp != nullptr) {
        cout << temp->podaci << " -> ";
        temp = temp->sledeci;
    }
    cout << "NULL" << endl;
}


void oslobodiListu(Node*& head) {
    Node* temp;
    while (head != nullptr) {
        temp = head;
        head = head->sledeci;
        delete temp;
    }
}

int main() {
    Node* head = nullptr;

    dodajNaPocetak(head, 10);
    dodajNaPocetak(head, 20);
    dodajNaPocetak(head, 30);

    cout << "Jednostruko povezana lista: ";
    prikaziListu(head);


    oslobodiListu(head);

    return 0;
}

Napisati program koji uzima od korisnika 10 brojeva i posatavlja ih u povezanu listu. Zatim, pronalazi najveci broj u listi.

#include <iostream>
using namespace std;

// Struktura za čvor povezane liste
struct Cvor {
    int broj;
    Cvor* sledeci;
};

// Funkcija za dodavanje novog čvora na kraj liste
void dodajNaKraj(Cvor*& glava, int vrednost) {
    Cvor* novi = new Cvor;
    novi->broj = vrednost;
    novi->sledeci = nullptr;

    if (glava == nullptr) {
        glava = novi;
    } else {
        Cvor* trenutni = glava;
        while (trenutni->sledeci != nullptr) {
            trenutni = trenutni->sledeci;
        }
        trenutni->sledeci = novi;
    }
}

// Funkcija za pronalaženje najvećeg broja u listi
int pronadjiNajveci(Cvor* glava) {
    if (glava == nullptr) return -1; // Prazna lista

    int najveci = glava->broj;
    Cvor* trenutni = glava->sledeci;

    while (trenutni != nullptr) {
        if (trenutni->broj > najveci) {
            najveci = trenutni->broj;
        }
        trenutni = trenutni->sledeci;
    }

    return najveci;
}

// Glavni program
int main() {
    Cvor* glava = nullptr;
    int unos;

    cout << "Unesite 10 brojeva:" << endl;

    for (int i = 0; i < 10; i++) {
        cout << "Broj " << i + 1 << ": ";
        cin >> unos;
        dodajNaKraj(glava, unos);
    }

    int najveci = pronadjiNajveci(glava);
    cout << "Najveci broj u listi je: " << najveci << endl;

    // Oslobađanje memorije
    while (glava != nullptr) {
        Cvor* temp = glava;
        glava = glava->sledeci;
        delete temp;
    }

    return 0;
}