Fruc (napisa): |
Trebao bi učitat sve rezervirane riječi iz C-a u jedan rječnik, piše da može iz datoteke, a mene zanima kako se to radi, a ako neko zna neki drugi način a da nije ručno upisivanje također može, hvala |
Kod: |
typedef int elementtype; typedef struct cell_tag{ elementtype element; struct cell_tag *next; }celltype; typedef celltype *SET; void MAKE_NULL(SET A) { A=(celltype*)malloc(sizeof(celltype)); A->next=NULL; } int MEMBER(int x, SET A) { SET pom=A; while(pom->next != NULL){ if(pom->element==x) return 1; pom=pom->next; } if(pom->element==x) return 1; return 0; } void INSERT(int x, SET A) { celltype *novi,*pom=A; if(!MEMBER(x,A)){ novi=(celltype*)malloc(sizeof(celltype)); while(pom->next != NULL){ pom=pom->next; } pom->next=novi; novi->next=NULL; novi->element=x; sortiraj(A); } } |
Kod: |
void MAKE_NULL (SET *A) { *A = (celltype*) malloc(sizeof(celltype)); (*A)->next = NULL; } |
ivstojic (napisa): | ||
Problem je sto funkciji MAKE_NULL saljes pointer, a ne pointer na pointer. Ako u C-u zelis u funkciji mijenjati argument, onda saljes pointer na njega. Ti ovdje zelis mijenjati pointer tipa celltype* (zelis u njega spremiti adresu koju vraca malloc), pa funkciji moras dati pointer na to, dakle pointer na pointer.
Nesto ovako bi trebalo raditi:
|
Kod: |
SET A; MAKE_NULL(&A); INSERT(3, A); INSERT(5, A); ... |
ivstojic (napisa): | ||
U ovom tvom primjeru bi se slao samo A (jer je tipa celltype**, a MAKE_NULL prima stvar tipa celltype**), pa bi onda radilo.
ali A mozes deklarirati i kao SET A, pa bi onda u MAKE_NULL slao adresu od A:
Princip je isti kao kad imas int koji zelis mijenjati u funkciji – funkcija prima pointer na int, a kad ju zoves posaljes adresu. Dvostruki pointer je samo najobicniji pointer koji pokazuje na nesto sto je takodjer pointer. Ostalim funkcijama mozes slati samo SET A kao u funkcijama INSERT i MEMBERS u gornjem kodu, ako te funkcije nemaju potrebu mijenjati samu varijablu A. Ako one samo mijenjaju neke pointere dalje u vezanoj listi, ne trebas im slati pointer na A. |
kkarlo (napisa): |
Sta nije danas trebala bit objavljena zadaca?
Ili je to sutra a meni su se malo datumi pomijesali...? |
@na (napisa): |
pa piše ti: "Elemente skupova možete ispisati u bilo kojem redoslijedu, ali svaki se mora javljati točno jednom!"
znači..unija ti je npr. od SONJA i ANA → SONJA, tj. od KOKO i KOKOLO → KOL isto tako ako trebaš presjek od prvog će biti samo AN, odnosno od drugog KO ...tako sam barem ja skužila...da si dobio MULTISET onda bi se u uniji i presjeku brojalo koliko je kojih slova pa bi ih sve morao ispisati.. inače, ovdje kako prolaziš po elementima jednog i drugog skupa moraš provjeriti nalazi li se taj element već u skupu, ako da - ne ubacuješ ga više |
minora665 (napisa): |
Dobila sam zadatak (između ostalog) implementirati TREE pomoću polja na temelju veze čvor - prvo dijete - slijedeći brat. Nije mi jasno sto je "globalni kursor avail" koji se koristi u skripti u poglavlju o toj implementaciji. Dakle ako itko zna please sto je to ne kuzim jel to nesto u c-u, moram li ga ja definirati, kako? Kuzim kako ga koristit u implementaciji (on je prvi slobodni node za cvor koji stvaramo) ali ne znam kako njega samog da deklariram implementiram ili sto vec trebam.... |
output generated using printer-friendly topic mod. Vremenska zona: GMT + 01:00.