Untitled
unknown
plain_text
a month ago
5.2 kB
5
Indexable
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct student {
char *ime;
char *prezime;
int id;
float prosjek;
struct student* nextNode;
} STUDENT;
void inputNodeData(STUDENT* headNode) {
char imebuffer[30], prezimebuffer[30];
printf("ID: ");
scanf("%d", &headNode->id);
printf("Ime: ");
scanf("%s", imebuffer);
headNode->ime = (char*)calloc(strlen(imebuffer) + 1, sizeof(char));
strcpy(headNode->ime, imebuffer);
printf("Prezime: ");
scanf("%s", prezimebuffer);
headNode->prezime = (char*)calloc(strlen(prezimebuffer) + 1, sizeof(char));
strcpy(headNode->prezime, prezimebuffer);
printf("Prosjek: ");
scanf("%f", &headNode->prosjek);
}
float prosjekSvih(STUDENT *headNode) {
int br = 0;
float suma = 0;
while(headNode != NULL) {
br++;
suma += headNode->prosjek;
headNode = headNode->nextNode;
}
return suma / br;
}
STUDENT* createSLList(void) {
STUDENT *headNode = (STUDENT*)calloc(1, sizeof(STUDENT));
if (headNode == NULL) {
perror("Kreiranje");
return NULL;
}
else {
inputNodeData(headNode);
headNode->nextNode = NULL;
}
return headNode;
}
STUDENT* insertNewNodeSLList(STUDENT* headNode) {
STUDENT *newHeadNode = (STUDENT*)calloc(1, sizeof(STUDENT));
if (newHeadNode == NULL) {
perror("Kreiranje");
return headNode;
}
else {
inputNodeData(newHeadNode);
newHeadNode->nextNode = headNode;
}
return newHeadNode;
}
void traverseSLList(STUDENT* traverseNode) {
if (traverseNode == NULL) {
return;
}
else {
while (traverseNode != NULL) {
printf("ID: %d - %s %s, prosjek: %.2f\n", traverseNode->id, traverseNode->ime, traverseNode->prezime, traverseNode->prosjek);
traverseNode = traverseNode->nextNode;
}
}
}
STUDENT* searchSLList(STUDENT* traverseNode, int criteria) {
while (traverseNode) {
if (traverseNode->id == criteria) {
return traverseNode;
}
traverseNode = traverseNode->nextNode;
}
return NULL;
}
void deleteNodeSLList(STUDENT** headNode, STUDENT* targetNode) {
if (targetNode == NULL) {
return;
}
if (*headNode == targetNode) {
*headNode = (*headNode)->nextNode;
free(targetNode);
}
else {
STUDENT* traverseNode = *headNode;
while (traverseNode->nextNode != NULL) {
if (traverseNode->nextNode == targetNode) {
traverseNode->nextNode = targetNode->nextNode;
free(targetNode->ime);
free(targetNode->prezime);
free(targetNode);
break;
}
traverseNode = traverseNode->nextNode;
}
}
}
STUDENT* deleteWholeSLList(STUDENT* traverseNode) {
STUDENT* deleteNode = NULL;
while (traverseNode) {
deleteNode = traverseNode;
traverseNode = traverseNode->nextNode;
free(deleteNode->ime);
free(deleteNode->prezime);
free(deleteNode);
}
return NULL;
}Editor is loading...
Leave a Comment