2014-12-09 2 views
-2

Функция не работает. Остальная часть кода в порядке. Он находит максимальное количество в списках (его также последний элемент списка), а затем не выходит из итерации, а вместо этого программа вылетает из строя. У меня есть намек, который предполагает, что у меня есть проблемы с нами из «()». Maxhelye означает max_posОшибка в использовании связанных списков в C

typedef short int shorti; 



typedef struct szelveny{ 
     int szsorszam; 
     int lsorszam; 
     int het; 
     shorti talalat; 
     int tnyeremeny; 
    }szelveny; //szelveny-->ticket, szsorszam-->ticketnumer, //lsorszam-->lotterynumber,het-->week, tnyeremeny-->prize 



typedef struct szelveny_element{ 
     szelveny szelveny; 
     struct szelveny_element *next; 
    }szelveny_element,*szelveny_pointer; 


typedef struct lottozo{ 

     int lsorszam; 
     shorti het; 
     int sszelveny; 
     int nyeremeny; 
    } lottozo; //lottozo-->lottery 


typedef struct lottozo_element{ 
     lottozo lottozo; 
     struct lottozo_element *next; 
    } lottozo_element,*lottozo_pointer; 


typedef struct het{ 
     shorti het; 
     lottozo_pointer lhead; 
     szelveny_pointer szhead; 
    } het; 


typedef struct het_element{ 
     het het; 
     struct het_element *next; 
    }het_element,*het_pointer; 


szelveny_pointer szelvenyek=0; 
lottozo_pointer  lottozok=0; 
het_pointer   hetek=0; 


int maxnyeremenyhelye2(int ahet)  //maxprizeposition, ahet-->week got as parameter 
{ 
    int max=0,maxhelye=-1; 
    het_pointer hp; 
    for(hp=hetek;hp!=0;hp=hp->next) 
     if(hp->het.het==ahet) 
     { 
      lottozo_pointer lp; 
      for(lp=hp->het.lhead;lp!=0;lp=lp->next) 
      { 
       if(lp->lottozo.nyeremeny>=max) 
       { 
        max=lp->lottozo.nyeremeny; 
        maxhelye=lp->lottozo.lsorszam; 
       } 

      } 
     return maxhelye;  
     } 
} 
+1

Не могли бы вы также показать нам связанные определения структуры? –

+0

Конечно! Готово! – JbubiJ

+0

Большое вам спасибо. еще одна вещь, при размещении кода, пожалуйста, имейте в виду, мы люди, а не компиляторы. на самом деле важна читаемость. Не в обиду. :-) –

ответ

1

Ваша функция int maxnyeremenyhelye2(int ahet) не всегда возвращает значение - не ваш компилятор предупредит вас об этом? Линия

return maxhelye; 

следует перемещать вниз под следующей скобой.

Смежные вопросы