Zdravím,
potřeboval by jsem poradit s jednou funkcí v c++ v jednosměrným spojovým seznamu.
Seznam jako takový je zde:
#include <iostream>
using namespace std;
typedef int data;
const data NULA = 0;
struct prvek
{
data data;
prvek *dalsi;
};
struct spojovy_seznam
{
prvek *hlava, *zarazka;
};
void vytvor_seznam(spojovy_seznam *s)
{
s->hlava = new prvek;
s->zarazka = s->hlava;
s->zarazka->data = NULA;
s->zarazka->dalsi = nullptr;
}
void vloz_na_zacatek(spojovy_seznam *s, data cislo)
{
prvek *bunka = new prvek;
bunka->data = cislo;
bunka->dalsi = s->hlava;
s->hlava = bunka;
}
void vloz_na_konec(spojovy_seznam *s, data cislo)
{
prvek *bunka = new prvek;
bunka->dalsi = nullptr;
bunka->data = NULA;
s->zarazka->dalsi = bunka;
s->zarazka->data = cislo;
s->zarazka = bunka;
}
void vypis(spojovy_seznam *s)
{
prvek *bunka = s->hlava;
while (bunka != s->zarazka)
{
cout << bunka->data << ", ";
bunka = bunka->dalsi;
}
cout << endl;
}
bool prazdny(spojovy_seznam *s)
{
return s->hlava == s->zarazka;
}
void odstranprvni(spojovy_seznam *s)
{
if (prazdny(s))
return;
else
{
prvek *pom = new prvek;
pom = s->hlava;
s->hlava = pom->dalsi;
delete pom;
}
}
void odstrandruhy(spojovy_seznam *s)
{
if (prazdny(s))
return;
else
{
prvek *pom2 = new prvek;
pom2 = s->hlava->dalsi;
s->hlava->dalsi = pom2->dalsi->dalsi;
delete pom2;
}
}
void vyprazdni(spojovy_seznam *s)
{
while (!prazdny(s))
{
odstranprvni(s);
}
}
void nejvetsi_prvek(spojovy_seznam *s)
{
while (s->hlava->dalsi != nullptr)
{
if (s->hlava < s->hlava->dalsi)
odstranprvni(s);
}
}
void najdi(int prvek)
{
};
int main()
{
}
Chtěl jsem vytvořit funkci najdi největší, ale k tomu jsem musel udělat funkci smaž druhý prvek, kterou prostě nějak nemůžu dát dohromady. Mohli by jste mi prosím poradit?