2016-11-22 3 views
0
void *max_subsequence(node *head){ 

    node *max=head; 
    int count=0; 
    int count1=0; 
    int i; 

    while(head!=NULL){ 
     count=0; 
     while(head->num < head->next->num){ 
      count++; 
      head=head->next; 
     } 
     if(count > count1){ 
      count1=count; 
     } 

     head=head->next; 
     max=head; 
    } 
} 

Этот код не компилируется, и я не знаю почему. Он должен найти самую большую возрастающую подпоследовательность данной последовательности, хранящуюся в списке. Может ли кто-нибудь дать мне подсказку?Найти максимальную подпоследовательность данной последовательности чисел (в списке)

typedef struct node1{ 
    int num; 
    struct node1 *next; 
    }node; 
+1

В 'while (node-> num < node-> next-> num)' вы не знаете, что 'node-> next! = NULL'. Это будет ошибка времени выполнения. –

+0

'max_subsequence' должно вернуть значение. – BLUEPIXY

+0

Я знаю, что он должен вернуть значение, я знаю, что бы я сделал после этого, в коде. Я думал о «запоминании», в макс. Переменной, узле, который является началом максимальной подпоследовательности. – Ross

ответ

1

Измените ваше время петли от node-> к head-> в обоих. Также не забудьте прислушаться к комментариям Weather Vane о возможной ошибке времени выполнения.

+0

Да, 'node' - это тип, а не переменная. –

+0

Я сделал это, я написал это как в исходном коде, на моем компьютере. Это была ошибка при переводе. Сожалею! – Ross

+1

@Ross теперь вы знаете, почему мы запрашиваем [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve), который показывает проблему. –

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