程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 通過數組初始化鏈表的兩種方法:指向指針的引用node *&tail和指向指針的指針(二維指針)node

通過數組初始化鏈表的兩種方法:指向指針的引用node *&tail和指向指針的指針(二維指針)node

編輯:C++入門知識

面試高頻題:單鏈表的逆置操作/鏈表逆序   相關文章 點擊打開

 

 

 

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;
     }
}


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved