В рамках более крупного проекта я пытаюсь написать функцию C, которая ищет в реализованном отсортированном связанном списке значение в структуре olnode
. Однако я получаю несколько ошибок. Я новичок в C, и я борюсь с указателями и двойными указателями и когда что использовать, поэтому я думаю, что это часть проблемы, но я не уверен, как решить проблему. Все необходимые заголовки включены. Это на Minix 2.0.4 с использованием cc в качестве компилятора.
Могу предоставить любой дополнительный необходимый код; поскольку я не знаком с C, я не уверен, сколько мне нужно показать, поэтому я предоставляю то, что, по моему мнению, необходимо, и ничего больше, чтобы быть кратким.
Глобальный код (кроме заголовков):
#define POOLSZ 53
struct olnode {
int eventnr;
int eventfq;
struct olnode *next;
};
typedef struct olnode olnode;
olnode pool[POOLSZ];
olnode *avail; /* points to first available node */
Функция, которая возвращает ошибки (ищет переданный int, после завершения *current
должен быть olnode
, который содержит текущее значение):
void
srchfreq(olnode *list, int xfrequency, olnode **current)
{
olnode *previous, *newnext;
while(current->eventfq > xfrequency) {
*previous = ¤t;
*newnext = current->next;
*current = *newnext;
}
}
Вызов функции srchfreq()
(в другой функции):
/* *list points to the first node in the list
(*current).eventfq is the value being searched for
*/
srchfreq(*list, (*current).eventfq, ¤t);
Ошибки (номера строк отредактированы относительно строк в srchfreq()
, как указано выше):
line 6: illegal use of selector eventfq
line 7: cannot convert pointer to struct
line 8: illegal use of selector next
line 8: cannot convert pointer to struct
line 9: cannot convert struct to pointer