面試高頻題:單鏈表的逆置操作/鏈表逆序 相關文章 點擊打開
void init_node(node *tail,char *init_array)
這樣聲明函數是不正確的,函數的原意是通過數組初始化鏈表若鏈表結點傳入的是指針,則並不能創建鏈表,除非是二維指針即指向指針的指針,或者是指向指針的引用
因為傳入的雖然是指針,但是對形參的操作並不能影響實參,函數內修改的是實參的副本。要想在函數內部修改輸入參數,要麼傳入的是實參的引用,要麼傳入的是實參的地址。
指向指針的引用
void init_node_by_referenceToPointer(node *&tail,const char *init_array)
{
node * tmp = NULL;
int j=strlen(init_array);
for(int i=0; i<j; i++)
{
tmp = new node;
tmp->data = *(init_array+i);
tmp->next = tail;
tail = tmp;
}
}
/***************************************
這樣的聲明是錯誤的!!!
void init_node_by_referenceToPointer(node &*tail,char *init_array)
error: cannot declare pointer to 'class node&'
****************************************/
指向指針的指針
void init_node_by_pointerToPointer(node **tail,const char *init_array)
{
node * tmp = NULL;
int j=strlen(init_array);
for(int i=0; i<j; i++)
{
tmp = new node;
tmp->data = *(init_array+i);
tmp->next = *tail;
*tail = tmp;
}
}