Funkcja splataj ma ponad 70 linii - powinieneś ją podzielić na mniejsze.
Ponadto w tej samej funkcji masz 10 poziomów zagnieżdżenia, co wygląda bardzo nieczytelnie. Podzielenie na mniejsze funkcje powinno trochę to pomóc.
Lista *glowa[100001];
Rezerwujesz sobie na twardo bardzo dużo pamięci - korzystaj z dynamicznej alokacji. Jeżeli przechowujesz wskaźnik do next, to czy potrzebujesz aby wszystkie elementy były w tablicy? Może wystarczy utworzyć dynamicznie nowy obiekt i dodać wskaźnik do niego do listy i element usunąć gdy go zdejmujesz.
W ogóle czy klasy nie powinny nazywać się zamaist Lista -> ElementListy, a klasa snickers(skąd ta nazwa?) -> Lista?
Zakładam że piszesz tą klasę na zajęcia i nie możesz korzystać z std::
Czepianie się: Czemu w klasie Lista definicję tworzysz na zewnątrz klasy, a w klasie Snickers w środku?
Czepianie się: Lepiej trzymaj się spójnej konwencji jeśli chodzi o nawiasy klamrowe, albo są wszędzie(ta opcję polecam), albo są tylko tam gdzie są niezbędne. Jeżeli będziesz to mieszał to szybko się pogubisz.
Takie pierwsze rzeczy które rzuciły mi się o oko...
- Bez magicznych liczb. Nikt nie będzie wiedział, co to jest
100001
albo100000
- Sensowne nazwy zmiennych. Co to są
m
,f
,gpom1
,gpom2
,m1
,m2
,op
? - Używaj
++i
,++licznik
- Spójnośc klamerek:
switch (op)
{
- Po co to wcięcie pod
#include
? - Nazwy zmiennych zazwyczaj się zaczynają od małej:
Snickers test
- Kwestia dyskusyjna, ale warto używać klamerek nawet przy
if (pom->back)
{
pom->back->next = pom;
}
Czasem może to uratować kilka godzin debuggowania.
8) Można dodać spacje tu i ówdzie, ale to już kwestia indywidualnego stylu (albo wytycznych firmy).
9) else if
ów nie trzeba zagnieżdżać, tak coś jest powszechnie akceptowalne:
if ()
...
else if ()
...
else if ()
...
else
...