Nisam do detalja nalizirao ali sam ti otklonio greske koje su prouzrkovale pad:
* sam markirao ono sto sam ja promenio
Code:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h>
typedef struct Lista{
char *element;
Lista* next;
int br;
}Lista_Rijeci;
void ucitaj_NizRijeci(Lista_Rijeci*);
void ispisi_NizRijeci(Lista_Rijeci*);
void insert(char*,Lista_Rijeci*);//Pomocna Funkcija
typedef Lista_Rijeci* point;
int main(){
Lista_Rijeci* Prvi=0; ;
ucitaj_NizRijeci(Prvi);
getchar();
}
void insert(char* str,Lista_Rijeci*pok){
int pom=0;
if(!pok){
* pok=(point)malloc(sizeof(Lista_Rijeci));
* pok->element = (char *)malloc(256);
strcpy(pok->element,str);
pok->br=1;
pok->next=0;
}
while(pok!=0){
if(!strcmp(str,pok->element)){
pok->br++;
pom=1;
}
if(pom)
break;
else
pok=pok->next;
}
if(pom){
pok->next=(point)malloc(sizeof(Lista_Rijeci));
* pok->next->element =(char *) malloc(256);
strcpy(pok->next->element,str);
pok->br=1;
pok->next->next=0;
}
}
void ucitaj_NizRijeci(Lista_Rijeci* pok){
char* pomocni;
pomocni = (char *)malloc(10000);
do{
gets(pomocni);
insert(pomocni,pok);
if(!strcmp(pomocni,"0"))break;
}while(pomocni[0]);
}
void ispisi_NizRijeci(Lista_Rijeci*pok){
* while(pok){
puts(pok->element);
printf(" %d",pok->br);
printf("\n");
pok=pok->next;
}
}
Dakle greska ti je ovde->
nemozes na char * da kopiras string ako taj cahr ne pokazuje na neku adresu u ovom slucaju moras sa malloc da lociras memoriju na koju ce *element da pokazuje kako bi mogao da kopiras string tamo.
Takodje ovo poslednje while je lepse kad ide sa
while (pok) umesto while (pok != 0 )
i koristi code tag drugi put :) ovo je bas bilo neprijatno tabovati i lepo prepisati :)