Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

Dvostruko vezana lista
WWW:

Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 2. godine -> Računarski praktikum 1
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
stiv
Gost





PostPostano: 8:11 sub, 21. 4. 2007    Naslov: Dvostruko vezana lista Citirajte i odgovorite

Jel bi netko možda zna napisati funkcijicu za uzlazno sortiranje dvostruko povezane liste po ovom red elementu.

[code:1]
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 20


struct cell {
int red;
float clan;

struct cell *next;
struct cell *prev;
};


struct cell *head, *tail;


void stvori(struct cell *cvor)
{
cvor->clan=100* (float)rand()/(RAND_MAX+1);
if(head == NULL) {
head = cvor;
cvor->prev = NULL;
} else {
tail->next = cvor;
cvor->prev = tail;
}

tail = cvor;
cvor->next = NULL;
}


void obrisi(struct cell *cvor) {
if(cvor->prev == NULL)
head = cvor->next;
else
cvor->prev->next = cvor->next;

if(cvor->next == NULL)
tail = cvor->prev;
else
cvor->next->prev = cvor->prev;
}


void ispis(struct cell *cvor)
{
for(cvor=head;cvor!=NULL;cvor=cvor->next)
{
printf("%d,%f\n", cvor->red,cvor->clan);
}
}


int cla(int q[N],int i)
{
int x,y;

y=N* (float)rand()/(RAND_MAX+1);
for(x=0;x<=i;x++)
{
if(y==q[x])
{
y=N* (float)rand()/(RAND_MAX+1);
exit;
}
}
return y;
}




int main(void) {
struct cell *cvor,*novi;
novi=NULL;
int i;
int p[N+1];
p[0]=0;


/* add some numbers to the double linked list */
for(i = 0; i <N; i++) {
cvor = (struct cell *)malloc(sizeof(struct cell));
cvor->red = cla(p,i);
stvori(cvor);
p[i]=cvor->red;
}


ispis(cvor);

/* destroy the dll list */
while(head != NULL)
obrisi(head);obrisi(head);
} ]


THX.[/code:1][/code]
Jel bi netko možda zna napisati funkcijicu za uzlazno sortiranje dvostruko povezane liste po ovom red elementu.

Kod:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 20


struct cell {
int red;
float clan;

struct cell *next;
struct cell *prev;
};


struct cell *head, *tail;


void stvori(struct cell *cvor)
{
cvor->clan=100* (float)rand()/(RAND_MAX+1);
if(head == NULL) {
head = cvor;
cvor->prev = NULL;
} else {
tail->next = cvor;
cvor->prev = tail;
}

tail = cvor;
cvor->next = NULL;
}


void obrisi(struct cell *cvor) {
if(cvor->prev == NULL)
head = cvor->next;
else
cvor->prev->next = cvor->next;

if(cvor->next == NULL)
tail = cvor->prev;
else
cvor->next->prev = cvor->prev;
}


void ispis(struct cell *cvor)
{
for(cvor=head;cvor!=NULL;cvor=cvor->next)
{
printf("%d,%f\n", cvor->red,cvor->clan);
}
}


int cla(int q[N],int i)
{
int x,y;

y=N* (float)rand()/(RAND_MAX+1);
for(x=0;x<=i;x++)
{
if(y==q[x])
{
y=N* (float)rand()/(RAND_MAX+1);
exit;
}
}
return y;
}




int main(void) {
struct cell *cvor,*novi;
novi=NULL;
int i;
int p[N+1];
p[0]=0;


/* add some numbers to the double linked list */
for(i = 0; i <N; i++) {
cvor = (struct cell *)malloc(sizeof(struct cell));
cvor->red = cla(p,i);
stvori(cvor);
p[i]=cvor->red;
}


ispis(cvor);

/* destroy the dll list */
while(head != NULL)
obrisi(head);obrisi(head);
} ]


THX.
[/code]


[Vrh]
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3561)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 9:58 sub, 21. 4. 2007    Naslov: Citirajte i odgovorite

Ne stignem sada... baci oko na stare vjezbe UuR-a (dakle, [b]ne[/b] ovogodisnje). :-s Tamo smo imali Bubble sort jednostruko vezane liste. :D Ovo je isto, uz dodatak izmjene jos jednih pointera. ;)
Ne stignem sada... baci oko na stare vjezbe UuR-a (dakle, ne ovogodisnje). Eh? Tamo smo imali Bubble sort jednostruko vezane liste. Very Happy Ovo je isto, uz dodatak izmjene jos jednih pointera. Wink



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
stiv
Gost





PostPostano: 13:28 sub, 21. 4. 2007    Naslov: Citirajte i odgovorite

Pgledao sam vec gro primjera,sam ni jedan nece radit kak spada...
Pgledao sam vec gro primjera,sam ni jedan nece radit kak spada...


[Vrh]
vinko
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 26. 08. 2006. (23:08:00)
Postovi: (1A8)16
Spol: muško
Sarma = la pohva - posuda
69 = 87 - 18
Lokacija: PMF-MO 214

PostPostano: 19:56 sub, 21. 4. 2007    Naslov: Citirajte i odgovorite

[quote="stiv"]Pgledao sam vec gro primjera,sam ni jedan nece radit kak spada...[/quote]

Ja mislim da bi ovo trebalo raditi (sort mijenja vrijednosti)
[code:1]void sort(cell *b, cell *e) {
for (cell *c1=b; c1!=e; c1=c1->next) {
cell* m = c1, *c2=c1->next;
while (true) {
if (c2->red < m->red) m=c2;
if (c2==e) break;
c2=c2->next;
}
if (m!=c1) {
int tr = m->red; m->red=c1->red; c1->red = tr;
float tc = m->clan; m->clan=c1->clan; c1->clan = tc;
}
}
}[/code:1]

a treba se pozvati sa sort(head, tail).

Medjutim, vjerojatno se zeli da sort samo mijenja medjuveze. Sori, al za to iskodirat bas nemam volje. U kôdu sa pocetka ove teme vidim gomile nekih nejasnoca (a vjerojatno ima i gresaka).
stiv (napisa):
Pgledao sam vec gro primjera,sam ni jedan nece radit kak spada...


Ja mislim da bi ovo trebalo raditi (sort mijenja vrijednosti)
Kod:
void sort(cell *b, cell *e) {
   for (cell *c1=b; c1!=e; c1=c1->next) {
      cell* m = c1, *c2=c1->next;
      while (true) {
         if (c2->red < m->red) m=c2;
         if (c2==e) break;
         c2=c2->next;
      }
      if (m!=c1) {
         int tr = m->red; m->red=c1->red; c1->red = tr;
         float tc = m->clan; m->clan=c1->clan; c1->clan = tc;
      }
   }
}


a treba se pozvati sa sort(head, tail).

Medjutim, vjerojatno se zeli da sort samo mijenja medjuveze. Sori, al za to iskodirat bas nemam volje. U kôdu sa pocetka ove teme vidim gomile nekih nejasnoca (a vjerojatno ima i gresaka).


[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
stiv
Gost





PostPostano: 21:38 sub, 21. 4. 2007    Naslov: Citirajte i odgovorite

Ima potencijala,al ne kuzim samo ovaj
indentifer true.Ako bi mogao pojasnit što on provjerava?
Ima potencijala,al ne kuzim samo ovaj
indentifer true.Ako bi mogao pojasnit što on provjerava?


[Vrh]
vinko
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 26. 08. 2006. (23:08:00)
Postovi: (1A8)16
Spol: muško
Sarma = la pohva - posuda
69 = 87 - 18
Lokacija: PMF-MO 214

PostPostano: 23:13 sub, 21. 4. 2007    Naslov: Citirajte i odgovorite

[quote="stiv"]Ima potencijala,al ne kuzim samo ovaj
indentifer true.Ako bi mogao pojasnit što on provjerava?[/quote]

On znaci da se petlja izvrsava stalno (jer ne volim koristiti goto naredbu).
Petlja se prekida naredbom break.

Pisao sam tako jer trebam petlju provjeriti i za prvi i za zadnji element. A tako sam pisao, jer ne smatram da e->next mora biti NULL.

U protivno bi taj kod zamijenio sa:

[code:1]for(cell *c2=c1->next; c2!=NULL; c2=c2->next)
if (c2->red < m->red) m=c2;[/code:1]
stiv (napisa):
Ima potencijala,al ne kuzim samo ovaj
indentifer true.Ako bi mogao pojasnit što on provjerava?


On znaci da se petlja izvrsava stalno (jer ne volim koristiti goto naredbu).
Petlja se prekida naredbom break.

Pisao sam tako jer trebam petlju provjeriti i za prvi i za zadnji element. A tako sam pisao, jer ne smatram da e→next mora biti NULL.

U protivno bi taj kod zamijenio sa:

Kod:
for(cell *c2=c1->next; c2!=NULL; c2=c2->next)
  if (c2->red < m->red) m=c2;


[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 2. godine -> Računarski praktikum 1 Vremenska zona: GMT + 01:00.
Stranica 1 / 1.

 
Forum(o)Bir:  
Možete otvarati nove teme.
Možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You can attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan