Mam następujące zadania:
1. Napisz funkcję struct node * reverse (struct node * lista), która odwróci kolejność elementów danej listy jednokierunkowej i zwróci odwróconą listę. Ponadto opisz jej działanie.
2. Napisz funkcję struct node * parz (struct node * lista), która przestawi tak elementy listy, że na początku bedą parzyste elementy, a na końcu - nieparzyste, czyli przykładowo z listy 1 2 3 4 5 powstanie lista 2 4 1 3 5. Dodatkowo funkcja ma zwrócić zadany porządek listy. Krótko opisz działanie tej funkcji.
Byłbym zobowiązany za rozwiązanie, bo jakoś nie mogę tego rozgryźć. Pozdrawiam.
Struktury danych w c / listy jednokierunkowe
-
- Użytkownik
- Posty: 45
- Rejestracja: 9 sty 2008, o 12:22
- Płeć: Mężczyzna
- Lokalizacja: Warszawa
- Podziękował: 4 razy
- kadiii
- Użytkownik
- Posty: 642
- Rejestracja: 20 gru 2005, o 21:04
- Płeć: Mężczyzna
- Lokalizacja: Wrocław
- Pomógł: 130 razy
Struktury danych w c / listy jednokierunkowe
W pierwszym. wszystko zalezy jaki rodzaj kolejki. W drugim to chyba najprościej przeszukujesz wszystkie po kolei i jak znajdujesz parzysty to dajesz na początek(powiedzmy na miejsce, które oznacza zmienna begin) i zwiększasz to begin o jeden żeby parzyste pozostały w kolejności początkowej, a dalej od ostatniego sprawdzonego miejsca powtarzasz sprawdzanie aż do końca listy. To tak najbardziej czytelnie i wprost.
-
- Użytkownik
- Posty: 45
- Rejestracja: 9 sty 2008, o 12:22
- Płeć: Mężczyzna
- Lokalizacja: Warszawa
- Podziękował: 4 razy
Struktury danych w c / listy jednokierunkowe
Ok. A jak by to wyglądało w postaci pseudokodu?kadiii pisze:W pierwszym. wszystko zalezy jaki rodzaj kolejki. W drugim to chyba najprościej przeszukujesz wszystkie po kolei i jak znajdujesz parzysty to dajesz na początek(powiedzmy na miejsce, które oznacza zmienna begin) i zwiększasz to begin o jeden żeby parzyste pozostały w kolejności początkowej, a dalej od ostatniego sprawdzonego miejsca powtarzasz sprawdzanie aż do końca listy. To tak najbardziej czytelnie i wprost.
- kadiii
- Użytkownik
- Posty: 642
- Rejestracja: 20 gru 2005, o 21:04
- Płeć: Mężczyzna
- Lokalizacja: Wrocław
- Pomógł: 130 razy
Struktury danych w c / listy jednokierunkowe
Myślałem,że piszę dość czytelnie, ale ok. Masz tu słownie żeby już nie było wątpliwości.
1.begin=0 i=0 //lub 1 w zależności jak numerujesz listę
2.Sprawdź i-ty element. Jeśli i>n zakończ, w przeciwnym wypadku jeśli wartość parzysta to punkt 3. w przeciwnym wypadku zwiększ i o 1 i ponów punkt 2.
3.Umieść i-ty element listy na pozycji o numerze begin. Zwiększ begin o 1. Zwiększ i o 1. Powróć do punktu 2.
Teraz już bez problemu zakodujesz, jeśli oczywiście znasz podstawy języka C.
1.begin=0 i=0 //lub 1 w zależności jak numerujesz listę
2.Sprawdź i-ty element. Jeśli i>n zakończ, w przeciwnym wypadku jeśli wartość parzysta to punkt 3. w przeciwnym wypadku zwiększ i o 1 i ponów punkt 2.
3.Umieść i-ty element listy na pozycji o numerze begin. Zwiększ begin o 1. Zwiększ i o 1. Powróć do punktu 2.
Teraz już bez problemu zakodujesz, jeśli oczywiście znasz podstawy języka C.
-
- Użytkownik
- Posty: 45
- Rejestracja: 9 sty 2008, o 12:22
- Płeć: Mężczyzna
- Lokalizacja: Warszawa
- Podziękował: 4 razy
Struktury danych w c / listy jednokierunkowe
No dobra. Może na spokojnie to rozgryzę. Słabo mi idzie prog. w C. Więc jak by ktoś cos tu napisał, to będę bardzo wdzięczny.kadiii pisze:Myślałem,że piszę dość czytelnie, ale ok. Masz tu słownie żeby już nie było wątpliwości.
1.begin=0 i=0 //lub 1 w zależności jak numerujesz listę
2.Sprawdź i-ty element. Jeśli i>n zakończ, w przeciwnym wypadku jeśli wartość parzysta to punkt 3. w przeciwnym wypadku zwiększ i o 1 i ponów punkt 2.
3.Umieść i-ty element listy na pozycji o numerze begin. Zwiększ begin o 1. Zwiększ i o 1. Powróć do punktu 2.
Teraz już bez problemu zakodujesz, jeśli oczywiście znasz podstawy języka C.
- kadiii
- Użytkownik
- Posty: 642
- Rejestracja: 20 gru 2005, o 21:04
- Płeć: Mężczyzna
- Lokalizacja: Wrocław
- Pomógł: 130 razy
Struktury danych w c / listy jednokierunkowe
Trochę dziwne rozumowanie, że jeżeli nie umiem podstaw języka, a chcę napisać algorytm w tym języku to zamiast się tego nauczyć, proszę o gotowce. No, ale może nie mogłeś znaleźć materiałów. Oto przykładowe: O strukturach dynamicznych w języku C , kurs języka C . Miłej pracy
-
- Użytkownik
- Posty: 45
- Rejestracja: 9 sty 2008, o 12:22
- Płeć: Mężczyzna
- Lokalizacja: Warszawa
- Podziękował: 4 razy
Struktury danych w c / listy jednokierunkowe
Poczekam aż się inni wypowiedzą Ale dzięki za linki. Przydadzą mi się.
[ Dodano: 27 Maj 2008, 22:27 ]
Ok. prosze o sprawdzenie i ewentualnie poprawienie. Zadanie 1:
I zadanie drugie:
[ Dodano: 27 Maj 2008, 22:27 ]
Ok. prosze o sprawdzenie i ewentualnie poprawienie. Zadanie 1:
Kod: Zaznacz cały
struct node
{
int data;
struct node * next;
}
struct node * reverse( struct node *list)
{
struct node * previous, *last;
previous = list;
list = list ->next;
last = list->next;
while (list->next != NULL)
{
list->next = previous;
previous = list;
list = last;
last= last ->next;
}
return list;
}
Kod: Zaznacz cały
struct node *parz (struct node *lista)
{
struct node *prev, *last;
prev=lista;
lista=lista->next;
last=lista->next;
int i=0;
if (i%2==0)
{
i=prev;
i++;
}
else if (i%2==1)
{
i=last;
i++;
}
}