2017-03-15 80 views
1

在C++中實現鏈接列表數組時遇到了問題。我做了2個功能,一個插入和顯示。有人可以幫忙嗎?鏈接列表的數組

這是主要的功能

node* a[100],*b,*temp,*temp2; 
for(int i=0;i<100;i++) 
{ 

    a[i]=NULL;; 
} 

insert_node(a,1,143); 
display(a,1) 

這是插入功能

void insert_node(node **q[100],int pos,int data) 
{ 
node *temp,*temp2; 
if(*q[pos]==NULL) 
{ 
    temp=new node; 
    temp->next=NULL; 
    temp->data=data; 
    *q[pos]=temp; 
} 
else 
{ 
    temp2=*q[pos]; 
    while(temp2->next != NULL) 
    { 
     temp2=*q[pos]; 
     temp2=temp2->next; 
    } 
    temp=new node; 
    temp->next=NULL; 
    temp->data=data; 
    temp2->next=temp; 
} 
} 

,這是顯示功能

void display(node **q[100], int pos) 
{ 
node * temp; 

temp=*q[pos]; 
cout<<"\n"; 
while(temp->next != NULL) 
{ 
    cout<<" "<<temp->data; 
} 
} 

它給出錯誤

error: cannot convert 'node**' to 'node***' for argument '1' to 'void insert_node(node***, int, int)' 

error: cannot convert 'node**' to 'node***' for argument '1' to 'void display(node***, int) 
+2

在C++中有很少成爲[3個星程序員](一個原因HTTP://wiki.c2。 com /?ThreeStarProgrammer) – NathanOliver

+2

無論您正在閱讀什麼書來學習C++,都要擺脫它,開始閱讀另一本書。 –

+0

在你的函數的參數中,你有節點** q [100],它是一個三重指針。你想要的是節點** q或節點* q [100]。 – user3336523

回答

0

變化

void insert_node(node **q[100],int pos,int data) 

void insert_node(node *q[100],int pos,int data) 

void display(node **q[100], int pos) 

void display(node *q[100], int pos) 
+0

好吧,我必須也刪除所有的去引用,它的工作。但你能解釋爲什麼我們改變了嗎?接收指針時不需要指針指針嗎? **編輯:好吧,我明白了。非常感謝:D ** –