Kod: |
typedef struct _broj
{ int x; struct _broj *next; } broj; broj* dodaj(broj *head, int n) { broj *temp, *headtemp; headtemp=(broj*)malloc(sizeof(broj)); temp=(broj*)malloc(sizeof(broj)); headtemp=head; temp->x=n; while (head->next!=NULL) head=head->next; temp->next=NULL; head->next=temp; return headtemp; } int main(void) { broj *head, *t, *headtemp; headtemp=(broj*)malloc(sizeof(broj)); int i, b; t=(broj*)malloc(sizeof(broj)); head=(broj*)malloc(sizeof(broj)); head=NULL; printf ("Tri broja liste: "); for (i=0; i<3; i++) {printf ("%d. broj: ", i); scanf("%d", &b); head=dodaj(head, b);} headtemp=head; while (head->next!=NULL) {printf ("%d ", head->x); head=head->next;} head=headtemp; while (head!=NULL) {t=head; head=head->next; free(t);} free(head); free(t); return 0; } |
Kod: |
headtemp=(broj*)malloc(sizeof(broj));
headtemp=head; |
Kod: |
head=NULL; |
Kod: |
while (head->next!=NULL) ... |
Kod: |
postaja* povratak(postaja* head) // F1 dobro radi
{ postaja *temp, *slj; int da=1; while (temp!=NULL) { if (da) {temp=head->next; head->next=NULL; da=0;} slj=temp->next; temp->next=head; head=temp; temp=slj; } return head; } |
Kod: |
void povratak(postaja* head) //F2 krivo radi
{ postaja *temp, *slj; int da=1; while (temp!=NULL) { if (da) {temp=head->next; head->next=NULL; da=0;} slj=temp->next; temp->next=head; head=temp; temp=slj; } return; } |
Kod: |
void ispisi(postaja* ulaz)
{ postaja *head=ulaz; while (head!=NULL) {printf("%s %d\n", head->naziv, head->v); head=head->next;} return; } |
Kod: |
int broj_elemenata_liste(lista) {
... return /* broj elemenata liste */ } postaja *de_mi_kti_element_liste(lista, k) { ... return /* k-ti element liste */; } void f2(lista) { cnt = broj_elemenata_liste(lista); for (i = 0; i < cnt/2; i++) { t1 = de_mi_kti_element_liste(lista, i); t2 = de_mi_kti_element_liste(lista, cnt-i-1); tmp1 = t1.podatak1; t1.podatak1 = t2.podatak1; t2.podatak1 = tmp1; tmp2 = t1.podatak2; t1.podatak2 = t2.podatak2; t2.podatak2 = tmp2; ... } } |
Citat: |
Kad listu invertiras "igranjem" s pointerima, treba vratiti novi pocetak liste, jer se ocito promijenilo koji od elemenata igra tu ulogu. |
Kod: |
void f(postaja **head) {
/* tu radis sa *head kako bi inace s head, ili uvedi pomocnu varijablu ako te to zbunjuje */ postaja *tmp_head; tmp_head = *head; ... *head = tmp_head; } |
output generated using printer-friendly topic mod. Vremenska zona: GMT + 01:00.