[C++]element o najwiekszym kluczu

aGabi94
Użytkownik
Użytkownik
Posty: 230
Rejestracja: 5 mar 2014, o 18:52
Płeć: Kobieta
Lokalizacja: Kraków
Podziękował: 60 razy

[C++]element o najwiekszym kluczu

Post autor: aGabi94 »

Potrzebuje pomocy przy programie z listą jednokierunkową.
Mam znaleźć element o największym kluczu.
Wymyśliłam coś takiego, proszę o poprawę.
Jak wyglądałby program gdybym miała
znaleźć wartość tego klucza?

Kod: Zaznacz cały

ellisty * lista::max()
{
ellisty *p,*pmax;  //pmax to wskaźnik na początek, pusta()==0 oznacza że lista nie jest pusta
if(pusta()==0)
{
pmax=glowa;
p=glowa->nast;
while(p!=NULL)
{if(p->klucz>pmax->klucz)
pmax=p;
}
return pmax;
}
}
Awatar użytkownika
Vardamir
Użytkownik
Użytkownik
Posty: 1913
Rejestracja: 3 wrz 2010, o 22:52
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 6 razy
Pomógł: 410 razy

[C++]element o najwiekszym kluczu

Post autor: Vardamir »

pusta() jest chybionym pomysłem. Sprawdza czy lista jest pusta, ale jaka lista?

Sprawdzenie czy lista jest pusta to po prostu sprawdzenie czy głowa wskazuje na NULL.

To co musisz zrobić to:
1. zadeklarować inta, w którym będziesz przechowywać największy znaleziony dotychczas klucz.
2. zadeklarować wskaźnik pomocniczy na głowę listy
3 przy pomocy wskaźnika pomocniczego przejść przez całą listę porównując klucz aktualnego elementu z największym dotychczas znalezionym, następnie przypisywać go do niej jeśli aktualny jest większy
4. zwracasz int, a nie wskaźnik na element
aGabi94
Użytkownik
Użytkownik
Posty: 230
Rejestracja: 5 mar 2014, o 18:52
Płeć: Kobieta
Lokalizacja: Kraków
Podziękował: 60 razy

[C++]element o najwiekszym kluczu

Post autor: aGabi94 »

Dziękuję, teraz działa.
norwimaj
Użytkownik
Użytkownik
Posty: 5101
Rejestracja: 11 mar 2011, o 16:31
Płeć: Mężczyzna
Lokalizacja: 52°16'37''N 20°52'45''E
Podziękował: 4 razy
Pomógł: 1001 razy

[C++]element o najwiekszym kluczu

Post autor: norwimaj »

Vardamir pisze:pusta() jest chybionym pomysłem. Sprawdza czy lista jest pusta, ale jaka lista?
A ja nie widzę deklaracji funkcji pusta, więc nie wiem, czy jej użycie jest chybionym pomysłem, czy nie.
aGabi94 pisze:

Kod: Zaznacz cały

ellisty * lista::max()
{
ellisty *p,*pmax;  //pmax to wskaźnik na początek, pusta()==0 oznacza że lista nie jest pusta
if(pusta()==0)
{
pmax=glowa;
p=glowa->nast;
while(p!=NULL)
{if(p->klucz>pmax->klucz)
pmax=p;
}
return pmax;
}
}
Przypisanie p=glowa->nast powinno się znaleźć także w pętli. W przeciwnym razie stoisz w miejscu.

Co Twoja funkcja zrobi, gdy dostanie na wejściu listę pustą? A co powinna zrobić?

-- 31 gru 2014, o 16:11 --
Vardamir pisze: 4. zwracasz int, a nie wskaźnik na element
Funkcja ma znaleźć element. Nie jest w treści napisane, co ma zwracać. Nie jest też napisane, jakiego typu są elementy. Może element jest węzłem listy, a może w każdym węźle listy jest klucz i element. Tego ja nie wiem.
Awatar użytkownika
Vardamir
Użytkownik
Użytkownik
Posty: 1913
Rejestracja: 3 wrz 2010, o 22:52
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 6 razy
Pomógł: 410 razy

[C++]element o najwiekszym kluczu

Post autor: Vardamir »

Ja podtrzymuje to, że według mnie funkcja pusta jest tu zbędna.

Natomiast odnośnie
norwimaj pisze:
Vardamir pisze: 4. zwracasz int, a nie wskaźnik na element
Funkcja ma znaleźć element. Nie jest w treści napisane, co ma zwracać. Nie jest też napisane, jakiego typu są elementy. Może element jest węzłem listy, a może w każdym węźle listy jest klucz i element. Tego ja nie wiem.
Akurat to jest napisane
aGabi94 pisze: Jak wyglądałby program gdybym miała
znaleźć wartość tego klucza?
norwimaj
Użytkownik
Użytkownik
Posty: 5101
Rejestracja: 11 mar 2011, o 16:31
Płeć: Mężczyzna
Lokalizacja: 52°16'37''N 20°52'45''E
Podziękował: 4 razy
Pomógł: 1001 razy

[C++]element o najwiekszym kluczu

Post autor: norwimaj »

Vardamir pisze:Ja podtrzymuje to, że według mnie funkcja pusta jest tu zbędna.
To zależy od tego, jaki styl programowania preferujesz. W przypadku takiego programiku nie sprawia to wielkiej różnicy. Przy większym projekcie można się zastanawiać, czy zależy nam bardziej na enkapsulacji danych, czy na żyłowaniu czasu wykonania.
Vardamir pisze: Akurat to jest napisane
aGabi94 pisze: Jak wyglądałby program gdybym miała
znaleźć wartość tego klucza?
Przeoczyłem.
ODPOWIEDZ