C++ 在链表中使用引用指针变量

C++ 在链表中使用引用指针变量,c++,pass-by-reference,C++,Pass By Reference,如何引用take_input()函数中的tail变量,使其反映在main中? 下面是main()和take_input()函数 这里我尝试通过引用传递[**tail] 如何在链表的take_input()函数中引用此函数{*tail正在导致错误} 任何帮助都将不胜感激 node* take_input(node **tail) { node* head = NULL; int count = 0; string name;

如何引用take_input()函数中的tail变量,使其反映在main中? 下面是main()和take_input()函数
这里我尝试通过引用传递[**tail] 如何在链表的take_input()函数中引用此函数{*tail正在导致错误}

任何帮助都将不胜感激

node* take_input(node **tail)
    {
        
        node* head = NULL;
        int count = 0;
        string name;
 
        cout << "Enter the name of the president";
        cin >> name;

        while(!name.empty())
        { 
            
            count++ ;
            node *new_node = new node(name);
            if(head == NULL)
            {
                head = new_node;
                *tail = new_node;
            }
            else
            {
                *tail->next = new_node ;
                *tail= *tail->next;
            }

            cout << "Enter the name of a member , the secretary or NULL to exit";
            cin >> name ;
            
            
            
         }
               return head;

     }
        int main()
        {
            int n ;
            string name;
            node *tail = NULL;
       
        
           node *head =  take_input(&tail);
       
           cin >> n;
           cin >> name;

           node *headfinal = insert_node(head, n ,name);

           cout<< "\n Enter the member's name which needs to be deleted\n";
           string del;
           cin >> del;

           node *head_final2 = delete_node(headfinal,del, &tail);

           node *temp2 = head_final2 ;
       
           while(temp2 != NULL)
           {
               cout << temp2->name;
               temp2 = temp2->next;
           
           } 
node*获取输入(node**tail)
{
node*head=NULL;
整数计数=0;
字符串名;
姓名;
而(!name.empty())
{ 
计数++;
节点*新节点=新节点(名称);
if(head==NULL)
{
head=新的_节点;
*tail=新的_节点;
}
其他的
{
*tail->next=新建_节点;
*tail=*tail->next;
}
姓名;
}
回流头;
}
int main()
{
int n;
字符串名;
node*tail=NULL;
节点*head=获取输入(&tail);
cin>>n;
cin>>名称;
节点*headfinal=插入节点(head,n,name);
cout>del;
节点*head\u final2=删除节点(headfinal、del和tail);
节点*temp2=头\u final2;
while(temp2!=NULL)
{
姓名;
temp2=temp2->next;
} 
这就是我目前面临的错误:


表达式必须有一个指向类类型(c/c++)(131,5)

的指针,正如Thomas Sabnik在注释中所回答的:

->
的优先级高于
*
。必须使用括号:

*tail->next=new\u节点;
更改为
(*tail)->next=new\u节点;

<代码> *Teal**Trave>下一步; >代码> *Teal=(*T尾)-> NeX..P/>。在所有的上限上。它是在大声叫喊。也避免在代码中添加重点,因为<代码> ** /代码>在C++中没有“粗体”的意思。。如果需要,可以使用
/
/*…*/
添加注释。您可以传递对指针的引用,即
节点*获取输入(节点*&tail)
。然后在main中,您只需调用
节点*头=获取输入(tail);
。⟼该代码可以通过采用一个并持续应用它而受益匪浅。缩进传达了结构和意图,这使得我们更容易理解代码,而不必花费大量的时间来解密它,并且它也可以使错误更加明显,因为它们在视觉上突出。C++中使用 NulLPTR < /C> >优先于C的
NULL
。还有一个很强的惯例,就是在
->
周围没有任何空格,所以用
x->y
来弄清楚那里发生了什么。@tadman好的,下次我会更小心的