Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <ctype.h>
- typedef struct Element_s {
- char songtitle[256], interpreter[256];
- struct Element_s *next;
- } Element_t;
- void getline (char sentence[], int lngth){
- char c;
- int i=0;
- do{
- c = getchar();
- }while(c=='\n');
- while(c!='\n' && i<lngth){
- sentence[i] = c;
- c=getchar();
- i++;
- }
- }
- void readFromKeyboard(Element_t *item){
- if(item==0) return;
- printf("Unesite ime pjesme: ");
- getline(item->songtitle, 255);
- printf("Unesite ime pjevaca: ");
- getline(item->interpreter, 255);
- }
- Element_t *allocateElement(){
- Element_t *elem = malloc(sizeof(Element_t));
- if(elem==0){
- printf("Greskaaaa...");
- return 0;
- }
- readFromKeyboard(elem);
- elem->next=0;
- return elem;
- }
- Element_t *find_End(Element_t *list){
- Element_t *end;
- if(list==0){
- printf("Prazna lista...");
- return 0;
- }
- while(list!=0){
- end=list;
- list=list->next;
- }
- return end;
- }
- Element_t *insertLast(Element_t *list){
- Element_t *elem = allocateElement();
- Element_t *end;
- if(elem ==0){
- printf("Greskaaaa...");
- return 0;
- }
- if(list!=0){
- end=find_End(list);
- end->next=elem;
- }
- else{
- list=elem;
- }
- return list;
- }
- Element_t *insertFirst(Element_t *list, Element_t *element){
- if(list!=0){
- element->next=list;
- return element;
- }
- else{
- list=element;
- return element;
- }
- return element;
- }
- void freeList(Element_t **list){
- Element_t *list2;
- list2=*list;
- if(list2==0 || list==0){
- printf("Prazna listaa...");
- return ;
- }
- Element_t *next;
- while(list2!=0){
- next=list2->next;
- free(list2);
- list2=next;
- }
- *list=0;
- }
- void print_singleElement(Element_t *element){
- if(element ==0){
- printf("Prazan element...");
- return;
- }
- printf("%s ", element->songtitle);
- printf("%s \n", element->interpreter);
- }
- void print_entireList(Element_t *list){
- if(list==0){
- printf("Prazna lista...");
- return;
- }
- int i=1;
- while(list!=0){
- printf("%d. ", i);
- print_singleElement(list);
- list=list->next;
- i++;
- }
- }
- long dajVelicinu(Element_t *list){
- if(list==0){
- printf("Prazna listaa...");
- return 0;
- }
- long i=0;
- while(list!=0){
- list=list->next;
- i++;
- }
- return i;
- }
- void print_list_reverse(Element_t *list){
- if(list==0){
- printf("Prazna listaaa...");
- return;
- }
- if(list->next != 0)
- print_list_reverse(list->next);
- print_singleElement(list);
- }
- Element_t *get_element(Element_t *list, long index){
- long duzina = dajVelicinu(list);
- if(index>duzina) return 0;
- long i = 1;
- while(list->next != 0){
- if(i==index){
- return list;
- }
- list=list->next;
- i++;
- }
- return 0;
- }
- void print_list_random(Element_t *list)
- {
- long laenge = dajVelicinu(list);
- long feld[laenge];
- int i;
- long repeat = 0;
- long zahl;
- long stelle = 0;
- for(i = 0; i < laenge; i++)
- {
- feld[i] = -1;
- }
- while(stelle < laenge)
- {
- zahl = (rand()%laenge);
- repeat = 0;
- for(i = 0; i < laenge; i++)
- {
- if(zahl == feld[i])
- {
- repeat = 1;
- }
- }
- if(repeat == 0)
- {
- feld[stelle] = zahl;
- stelle++;
- }
- }
- for(i = 0; i < laenge; i++)
- {
- print_singleElement(get_element(list,feld[i]));
- }
- }
- int main()
- {
- /*Element_t *list = 0;
- Element_t *elem = allocateElement();
- int velicina;
- list=insertLast(list);
- list=insertLast(list);
- list=insertLast(list);
- print_entireList(list);
- list=insertFirst(list, elem);
- print_entireList(list);
- printf("Reverse: ");
- print_list_reverse(list);
- printf("Random: ");
- print_list_random(list);
- freeList(&list);*/
- int w = 1;
- Element_t *list=0;
- Element_t *elem = allocateElement();
- while(w!=0){
- printf("Menu:\n");
- printf("1.Dodaj element na kraj: \n");
- printf("2.Dodaj element na pocetak: \n");
- printf("3. Isprintaj listu: \n");
- printf("4. Isprintaj naopako: \n");
- printf("5. Ispintaj random: \n");
- printf("6. Izbrisi listu: \n");
- printf("0. Kraj programa. ");
- scanf("%d", &w);
- switch(w){
- case 1:
- list=insertLast(list);
- break;
- case 2:
- list=insertFirst(list, elem);
- break;
- case 3:
- print_entireList(list);
- break;
- case 4:
- print_list_reverse(list);
- break;
- case 5:
- print_list_random(list);
- break;
- case 6:
- freeList(&list);
- break;
- case 0:
- break;
- default:
- printf("Falsche Eingabe\n");
- break;
- }
- }
- freeList(&list);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment