sortera de två första i cirkulär lista [c++]

Permalänk
Hedersmedlem

sortera de två första i cirkulär lista [c++]

Sitter och försöker mig på att sortera en cirkulär lista med bubble sort. Jag tittar hela tiden framåt och jämför elementen framför. Jag ändrar pekare för att sortera och gör ingen kopiering. Det fungerar bra att sortera alla till rätt plats förutom de två första eftersom jag aldrig tittar på den jag står på. Det verkar bli fel hur jag än gör för att sortera de två första. Det som händer är att det första elementet(efter sortering, alltså det största) hamnar sist i listan. Problemet är alltså att listan fortfarande börjar från samma element som då efter sortering blivit det andra i listan. Hoppas det inte är allt för otydligt.

Det känns som ett logiskt problem så jag lägger inte upp någon kod men skulle kunna om det behövs.
En fin paint-bild kan ni få
http://forumbilder.se/show.aspx?iid=7f7201050301P0233

Det är från början en skoluppgift som blev godkänd med en inte helt ok lösning. Tänkte försöka lösa den ordentligt nu.

Permalänk
Medlem
Skrivet av Shimonu:

listan fortfarande börjar från samma element som då efter sortering blivit det andra i listan

Aha fattar nu, ska edita

Men gör så att du jämför 1 och 2. Om 2 är större än 1, byt plats och ha en int +1 som reggar att något har bytt plats. Sedan jämför du plats 2 och 3, byt om 3 är större. När du dragit igenom en gång så sätter du int räknaren till 0 igen och fortsätter att göra samma tills att den är 0 när du gått igenom allt så att inga byten behövdes göras

Permalänk
Hedersmedlem

Ja, det blir väl sorterat men listan börjar fortfarande från samma element. Så det som borde varit först hamnar sist istället.

EDIT: Jo jag förstår ju hur själva sorteringen går till. Men listan vill ju alltid börja från det som var det första elementet från början. Så om det sorteras ner i mitten av listan så kommer listan skrivas ut som att det elementet var först.

Permalänk
Hedersmedlem

Kan du inte ha ett dumt startobjekt som endast pekar på listans första element (och kanske håller reda på hur många element som finns och liknande)?

Permalänk
Hedersmedlem

Det lät som en smart ide. Jag ska testa

Permalänk
Hedersmedlem

Sorry för dubbelpost men tänkte bara meddela att dummy-elementet var det enda som behövdes. Jag började ändra på min length-funktion osv men det blev bara fel. När jag återvände till hur jag hade innan och bara lagt till dummy-element i början så blev det helt rätt.

Tack för hjälpen