Я не понимаю, почему я получаю предупреждение о несовместимом типе указателя из моего кода. Мой отладчик говорит, что проблема со строкой
nodeToInsert->next = *head;
Конкретная строка является частью функции
user_t *moveNameToHead();
Я не знаю, почему эта ошибка возникает, так как оба указателя из типа user_t. Это соответствующий код для проблемы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NAME_LENGTH 20
typedef struct user {
char name[NAME_LENGTH];
int numOfFriends;
char nameOfFriend[NAME_LENGTH];
struct node *next; //used for our linked list
} user_t;
//prototypes of functions to be used
void addQueryType();
user_t *createNewNameNode(char *name);
user_t *moveNameToHead();
int main() {
/// some code that eventually calls addQueryType ///
}
void addQueryType() {
char nameOfPersonA[NAME_LENGTH], nameOfPersonB[NAME_LENGTH];
//record names user enters
scanf("%s", nameOfPersonA);
scanf("%s", nameOfPersonB);
user_t *head, *temporary;
temporary = createNewNameNode(nameOfPersonA);
moveNameToHead(&head, temporary);
temporary = createNewNameNode(nameOfPersonB);
moveNameToHead(&head, temporary);
}
//will create nodes for us on a needs basis
user_t *createNewNameNode(char *name) {
user_t *node = malloc(sizeof(user_t));
strcpy(node->name, name);
node->next = NULL;
return node;
}
//moves newly added name to head of the linked list
user_t *moveNameToHead(user_t **head, user_t *nodeToInsert) {
nodeToInsert->next = *head;
*head = nodeToInsert;
return nodeToInsert;
}
Я пытаюсь создать связанный список с именами пользователей. Имена превращаются в узлы списка, а затем передаются в функцию, которая превращает самое последнее имя в заголовок списка. Проблема в том, что я не знаю, почему я получаю предупреждение о несовместимом типе указателя.
Я пытался изменить * голову на тип символа, думая, что, возможно, это как-то связано с элементами в списке есть имена, но которые вернули ту же ошибку вместе с другими.
Любая помощь по этому вопросу будет принята с благодарностью.