Advertisement
DavidsInferno

AISP 2/3

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