Advertisement
DavidsInferno

AiSP 5. vjezba (undone)

Nov 5th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.32 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include<stdio.h>
  3. #include<stdlib.h>
  4. #include<string.h>
  5. #include<conio.h>
  6.  
  7. typedef struct cvor* position;
  8. typedef struct cvor
  9. {
  10. char ime[20];
  11. char prez[20];
  12. int god;
  13.  
  14. position next;
  15. }Cvor;
  16.  
  17. position createnode();
  18. int insert(position, position);
  19. void insertFirst(position);
  20. void print(position);
  21. void insertEnd(position);
  22. void insertEnd2(position);
  23. void deleteElem(position);
  24. void deleteElem2(position);
  25. void insertAfter(position);
  26. void insertBefore(position);
  27. void sortiranje(position);
  28. void readFile(position);
  29. position findPrez(position);
  30.  
  31. position createnode()
  32. {
  33. position q = NULL;
  34. q = (position)malloc(sizeof(Cvor));
  35. if (q == NULL) {
  36. printf("nije aloc");
  37. return NULL;
  38. }
  39. q->next = NULL;
  40. return q;
  41. }
  42.  
  43. void print(position p)
  44. {
  45. printf("\n");
  46. p = p->next;
  47.  
  48. while (p != NULL)
  49. {
  50. printf("%s %s %d\n", p->ime, p->prez, p->god);
  51. p = p->next;
  52. }
  53. }
  54. void insertFirst(position p)
  55. {
  56.  
  57. position temp = NULL;
  58.  
  59. printf("\numetanje na pocetak liste:\n");
  60. temp = createnode();
  61. if(temp==NULL)
  62. return;
  63. printf("unesi ime,prez,god:\n");
  64. scanf(" %s %s %d", temp->ime, temp->prez, &temp->god);
  65.  
  66. temp->next = p->next;
  67. p->next = temp;
  68. }
  69. void insertEnd(position p)
  70. {
  71. position temp = NULL;
  72. printf("\numetanje na kraj liste:\n");
  73. temp = createnode();
  74. printf("unesi ime,prez,god:\n");
  75. scanf(" %s %s %d", temp->ime, temp->prez, &temp->god);
  76.  
  77. while (p->next != NULL)
  78. p = p->next;
  79.  
  80.  
  81. temp->next = p->next;
  82. p->next = temp;
  83. }
  84.  
  85. position findLast(position p)
  86. {
  87. while (p->next != NULL)
  88. {
  89. p = p->next;
  90. }
  91. return p;
  92. }
  93.  
  94. void deleteElem(position p)//primjer 1
  95. {
  96. position temp = NULL;
  97. char name[20];
  98. printf("unesi ime koje zelis izbrisat\n");
  99. scanf(" %s", name);
  100.  
  101. while (p->next != NULL)
  102. {
  103. if (_strcmpi(p->next->ime, name) == 0)
  104. {
  105. temp = p->next;
  106. p->next = temp->next;
  107. free(temp);
  108.  
  109. }
  110. p = p->next;
  111. }
  112. }
  113.  
  114. position findPrez(position p) {
  115. position temp = 0;
  116. char srnm[128];
  117. printf("\nunesi prezime:\t");
  118. scanf_s("%s", srnm, 128);
  119.  
  120. while (p != NULL) {
  121. if (_strcmpi(p->prez, srnm) == 0)
  122. temp = p;
  123. p = p->next;
  124. }
  125. return temp;
  126. }
  127.  
  128. position findPrev(position p, position target)
  129. {
  130. while (p->next != target)
  131. {
  132. p = p->next;
  133. }
  134. return p;
  135. }
  136.  
  137. position findName(position p)
  138. {
  139. position temp = NULL;
  140. char ime[20];
  141. printf("unesi ime:\n");
  142. scanf(" %s", ime);
  143. while (p != NULL)
  144. {
  145. if (_strcmpi(p->ime, ime) == 0)
  146. {
  147. printf("osoba %s je pronadena\n", ime);
  148. //printf("ime je :%s\n", p->ime);
  149. temp = p;
  150. }
  151. p = p->next;
  152. }
  153. return temp;
  154. }
  155.  
  156. void insertAfter(position p)
  157. {
  158. position target = findName(p);
  159. position novi = NULL;
  160. novi = createnode();
  161.  
  162. printf("unesi ime,prez te god novog clana:\n");
  163. scanf(" %s %s %d", novi->ime, novi->prez, &novi->god);
  164.  
  165. novi->next = target->next;
  166. target->next = novi;
  167. }
  168.  
  169. void insertBefore(position p)
  170. {
  171. position target = findName(p);
  172. position prev = NULL;
  173. position novi = NULL;
  174. novi = createnode();
  175. printf("unesi ime,prez te god novog clana\n");
  176. scanf(" %s %s %d", novi->ime, novi->prez, &novi->god);
  177.  
  178. prev = findPrev(p, target);
  179. novi->next = prev->next;
  180. prev->next = novi;
  181. }
  182.  
  183.  
  184.  
  185. void sortiranje(position p)
  186. {
  187. position prev_j, j, i, end = NULL;
  188. end = NULL;
  189. while (p->next != end)
  190. {
  191. i = p;
  192. prev_j = i->next;
  193. j = prev_j->next;
  194. while (j != end)
  195. {
  196. if (_strcmpi(prev_j->prez, j->prez) > 0)
  197. {
  198. prev_j->next = j->next;
  199. j->next = prev_j;
  200. i->next = j;
  201. }
  202. i = prev_j;
  203. prev_j = j;
  204. j = j->next;
  205.  
  206. }
  207. end = prev_j;
  208. }
  209. }
  210.  
  211.  
  212. void sortiranjePoGodini(position p) {
  213. position i, j = NULL;
  214. int temp = 0;
  215. i = p;
  216. j = p->next;
  217.  
  218. for (i = p; i != NULL; i = i->next) {
  219. for (j = i->next; j != NULL; j = j->next) {
  220. if (i->god > j->god) {
  221. temp = i->god;
  222. i->god = j->god;
  223. j->god = temp;
  224. }
  225. }
  226. }
  227. }
  228.  
  229. void readFile(position p)
  230. {
  231. FILE* f = NULL;
  232. position s = NULL;
  233. f = fopen("studenti.txt", "r");
  234. if (f == NULL) {
  235. printf("nie open");
  236. return;
  237. }
  238.  
  239. while (!feof(f))
  240. {
  241. s = createnode();
  242. fscanf(f, "%s %s %d", s->ime, s->prez, &s->god);
  243.  
  244. insert(p, s);
  245. }
  246.  
  247. fclose(f);
  248.  
  249. }
  250. int insert(position p, position s)
  251. {
  252. while (p->next != NULL) {
  253. p = p->next;
  254. }
  255.  
  256. s->next = p->next;
  257. p->next = s;
  258.  
  259. return 0;
  260. }
  261. void izbrisiSve(position p)
  262. {
  263. position temp = NULL;
  264. while (p->next != NULL)
  265. {
  266. temp = p->next;
  267. p->next = temp->next;
  268. free(temp);
  269. }
  270. }
  271.  
  272. int main()
  273. {
  274. int unos=0;
  275. Cvor head2;
  276. position head = NULL;
  277. position a = NULL;
  278. head = createnode();
  279.  
  280.  
  281. head2.next = NULL;
  282. while(unos!=0){
  283. 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.");
  284. switch(unos){
  285. case 1:
  286. ;
  287.  
  288.  
  289. }}
  290. readFile(head);
  291. print(head);
  292. insertFirst(head);
  293. print(head);
  294. insertEnd(head);
  295. print(head);
  296.  
  297. a = findPrez(head);
  298. printf("\ntrazena osoba:\t%s %s, %d.\n", a->ime, a->prez, a->god);
  299.  
  300. deleteElem(head);
  301. print(head);
  302.  
  303. printf("umetanje nakon\n");
  304. insertAfter(head);
  305. print(head);
  306. printf("umetanje prije\n");
  307. insertBefore(head);
  308. print(head);
  309. printf("\nsortiranje:\n");
  310. sortiranjePoGodini(head);
  311. print(head);
  312.  
  313. izbrisiSve(head);
  314. print(head);
  315.  
  316.  
  317. system("PAUSE");
  318. return 0;
  319. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement