#define _CRT_SECURE_NO_WARNINGS #include #include #include #include typedef struct cvor* position; typedef struct cvor { char ime[20]; char prez[20]; int god; position next; }Cvor; position createnode(); int insert(position, position); void insertFirst(position); void print(position); void insertEnd(position); void insertEnd2(position); void deleteElem(position); void deleteElem2(position); void insertAfter(position); void insertBefore(position); void sortiranje(position); void readFile(position); position findPrez(position); position createnode() { position q = NULL; q = (position)malloc(sizeof(Cvor)); if (q == NULL) { printf("nije aloc"); return NULL; } q->next = NULL; return q; } void print(position p) { printf("\n"); p = p->next; while (p != NULL) { printf("%s %s %d\n", p->ime, p->prez, p->god); p = p->next; } } void insertFirst(position p) { printf("\numetanje na pocetak liste:\n"); position temp = NULL; temp = createnode(); printf("unesi ime,prez,god:\n"); scanf(" %s %s %d", temp->ime, temp->prez, &temp->god); temp->next = p->next; p->next = temp; } void insertEnd(position p) { printf("\numetanje na kraj liste:\n"); position temp = NULL; temp = createnode(); printf("unesi ime,prez,god:\n"); scanf(" %s %s %d", temp->ime, temp->prez, &temp->god); while (p->next != NULL) p = p->next; temp->next = p->next; p->next = temp; } position findLast(position p) { while (p->next != NULL) { p = p->next; } return p; } void deleteElem(position p)//primjer 1 { position temp = NULL; char name[20]; printf("unesi ime koje zelis izbrisat\n"); scanf(" %s", name); while (p->next != NULL) { if (_strcmpi(p->next->ime, name) == 0) { temp = p->next; p->next = temp->next; free(temp); } p = p->next; } } position findPrez(position p) { position temp = 0; char srnm[128]; printf("\nunesi prezime:\t"); scanf_s("%s", srnm, 128); while (p != NULL) { if (_strcmpi(p->prez, srnm) == 0) temp = p; p = p->next; } return temp; } position findPrev(position p, position target) { while (p->next != target) { p = p->next; } return p; } position findName(position p) { position temp = NULL; char ime[20]; printf("unesi ime:\n"); scanf(" %s", ime); while (p != NULL) { if (_strcmpi(p->ime, ime) == 0) { printf("osoba %s je pronadena\n", ime); //printf("ime je :%s\n", p->ime); temp = p; } p = p->next; } return temp; } void insertAfter(position p) { position target = findName(p); position novi = NULL; novi = createnode(); printf("unesi ime,prez te god novog clana:\n"); scanf(" %s %s %d", novi->ime, novi->prez, &novi->god); novi->next = target->next; target->next = novi; } void insertBefore(position p) { position target = findName(p); position prev = NULL; position novi = NULL; novi = createnode(); printf("unesi ime,prez te god novog clana\n"); scanf(" %s %s %d", novi->ime, novi->prez, &novi->god); prev = findPrev(p, target); novi->next = prev->next; prev->next = novi; } void sortiranje(position p) { position prev_j, j, i, end = NULL; end = NULL; while (p->next != end) { i = p; prev_j = i->next; j = prev_j->next; while (j != end) { if (_strcmpi(prev_j->prez, j->prez) > 0) { prev_j->next = j->next; j->next = prev_j; i->next = j; } i = prev_j; prev_j = j; j = j->next; } end = prev_j; } } void sort2(position p) { position i = NULL; position j = NULL; int temp; for (i = p; i->next != NULL; i = i->next) { for (j = i->next; j != NULL; j = j->next) { if (i->god > j->god) { temp = i->god; i->god = j->god; j->god = temp; } } } } void readFile(position p) { FILE* f = NULL; position s = NULL; f = fopen("studenti.txt", "r"); if (f == NULL) { printf("nie open"); return; } while (!feof(f)) { s = createnode(); fscanf(f, "%s %s %d", s->ime, s->prez, &s->god); insert(p, s); } fclose(f); } int insert(position p, position s) { while (p->next != NULL) { p = p->next; } s->next = p->next; p->next = s; return 0; } void izbrisiSve(position p) { position temp = NULL; while (p->next != NULL) { temp = p->next; p->next = temp->next; free(temp); } } int main() { position head = NULL; position a = NULL; head = createnode(); Cvor head2; head2.next = NULL; readFile(head); print(head); insertFirst(head); print(head); insertEnd(head); print(head); a = findPrez(head); printf("\ntrazena osoba:\t%s %s, %d.\n", a->ime, a->prez, a->god); deleteElem(head); print(head); /* printf("umetanje nakon\n"); insertAfter(head); print(head); printf("umetanje prije\n"); insertBefore(head); print(head); printf("\nsortiranje:\n"); sortiranje(head); print(head); izbrisiSve(head); print(head); */ _getche(); return 0; }