搞不明白的异常

搞不明白的错误,求助
错误信息:
--------------------Configuration: 1 - Win32 Debug--------------------
Compiling...
1.cpp
Linking...
1.obj : error LNK2001: unresolved external symbol "bool __cdecl insert(struct node *,int,char)" (?insert@@YA_NPAUnode@@HD@Z)
Debug/1.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错.

1.exe - 1 error(s), 0 warning(s)

代码:
#include <stdio.h>
#include <stdlib.h>

#define N 100
struct linkNode;
struct node{
char name;
linkNode *next;
};
struct linkNode{
linkNode *next;
node *node;
};
int main(){
node arr[N];
int counter=0,positionA,positionB;
char nameA,nameB;

bool isset(node* arr,int length,char name);
bool insert(node* arr,int length,char name);
bool add(node* arr,int now,int next);
int  find(node* arr,const int length,char name);

while(true && counter<N){
scanf("%c%c",&nameA,&nameB);
if(!isset(arr,counter,nameA)){
if(false == insert(arr,counter,nameA)){
exit(0);
}
}
if(!isset(arr,counter,nameB)){
if(false == insert(arr,counter,nameB)){
exit(0);
}
}
positionA = find(arr,counter,nameA);
positionB = find(arr,counter,nameB);
if(-1 == positionA || -1 == positionB){
exit(0);
}

add(arr,positionA,positionB);
add(arr,positionB,positionA);
}

return 0;
}

bool add(node *arr,int positionA,int positionB){
linkNode temp;
temp.node = &arr[positionB];
temp.next = arr[positionA].next;
arr[positionA].next = &temp;
return true;
}

int find(node* arr,const int length,char name){
int i;
for(i=0;i<length;i++){
if(name == arr[i].name){
return i;
}
}
return -1;
}

bool insert(node* arr,int *length,char name){
if(*length+1>=N){
return false;
}
arr[++(*length)].name = name;
arr[*length].next = NULL;
return true;
}

bool isset(node* arr,int length,char name){
int i;
for(i=0;i<length;i++){
if(arr[i].name == name){
return true;
}
}
return false;
}

------解决方案--------------------
insert的声明跟定义不一致。。length那里。。一个int,一个int*。。。