Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- #include<conio.h>
- 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)
- {
- position temp = NULL;
- printf("\numetanje na pocetak liste:\n");
- temp = createnode();
- if(temp==NULL)
- return;
- 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)
- {
- position temp = NULL;
- printf("\numetanje na kraj liste:\n");
- 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 sortiranjePoGodini(position p) {
- position i, j = NULL;
- int temp = 0;
- i = p;
- j = p->next;
- for (i = p; i != 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()
- {
- int unos=0;
- Cvor head2;
- position head = NULL;
- position a = NULL;
- head = createnode();
- head2.next = NULL;
- while(unos!=0){
- printf("Sto zelite napravit?\n1.Read\n2.Insert beggining\n3.Insert end\n4.Delete element\n5.Insert after\n6.insert before\n7.Sortiraj po godini\n8.");
- switch(unos){
- case 1:
- ;
- }}
- 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");
- sortiranjePoGodini(head);
- print(head);
- izbrisiSve(head);
- print(head);
- system("PAUSE");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement