我对链接列表的c代码感到困惑。代码在visual studio中正常工作,但不适用于Linux。代码如下
typedef struct map
{
char key[50];
char value[50];
struct map* next;
} map_t;
void AddEntry( map_t** head, char* key, char* value )
{
map_t* newEntry = (map_t*)malloc(sizeof(map_t) );
strcmp( newEntry->key, key);
strcmp( newEntry->value, value);
newEntry->next = NULL;
if ( *head == NULL )
{
*head = newEntry;
}
else
{
map_t** currentEntry = head;
while ( (*currentEntry)->next != NULL )
{
*currentEntry = (*currentEntry)->next;
}
(*currentEntry)->next = newEntry;
}
}
这是我的电话:
map_t* localListHead = NULL;
AddEntry( &localListHead, "??", "Test" );
有人看到我没看到的东西吗?
答案 0 :(得分:0)
我可能错了,但似乎你的else块中的代码有问题。您声明map_t** currentEntry
已分配给head
,然后写入其中。你为什么这样做?
据我所知,你有什么需要map_t* currentEntry = *head
。