为什么需要双指针来更改头部,而无需更改链接列表中的其他位置

用户名
void insertAtTop(node** head, int value){
    node* temp=new node();
    temp->data=value;
    temp->next=*head;
    *head=temp;
}

void insertAtLast(node*head, int value){
    while(head->next!=NULL){
        head=head->next;
    }
    node*temp=new node();
    temp->data=value;
    temp->next=NULL;
    head->next=temp;
}

我不明白为什么您需要使用指向指针的指针来更改头部,但是如果您想在其他位置添加元素,则只需发送node* head而不是即可node** head就像for insertatLast node*headas一样有效,但是如果我这样做insertAtTop也不会。

什里达·库尔卡尼(Shridhar R Kulkarni)

您可以同时实现insertAtTopinsertAtLast同时使用pass by referencepass by value我建议您阅读按引用传递和按值传递之间的区别您也可以阅读此内容

我假设head被声明为node* head;

通过参考传递:

void insertAtTop(node** head, int value){
    node* temp=new node();
    temp->data=value;
    temp->next=*head;
    *head=temp;
}

呼叫: insertAtTop(&head, value);

void insertAtLast(node** head, int value){
    node* h = *head;
    while(h->next!=NULL){
        h = h->next;
    }
    node* new_node=new node();
    new_node->data=value;
    new_node->next=NULL;
    h->next=new_node;
}

呼叫: insertAtLast(&head, value);

按值传递:

node* insertAtTop(node* head, int value){
    node* temp=new node();
    temp->data=value;
    temp->next= head;
    head = temp;
    return head;
}

呼叫: head = insertAtTop(head, value);

node* insertAtLast(node* head, int value){
    node* original_head = head;
    while(head->next!=NULL){
        head=head->next;
    }
    node*temp=new node();
    temp->data=value;
    temp->next=NULL;
    head->next=temp;
    return original_head;
}

呼叫: head = insertAtLast(head, value);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么其他列表也会更改?

来自分类Dev

为什么我需要在Python中复制类实例,而无需复制其他对象类型?

来自分类Dev

包含列表和其他数据类型的字典字符串,而无需更改python中的数据类型

来自分类Dev

更改列表中的值而无需循环

来自分类Dev

在其他Git分支中查看文件而无需更改分支

来自分类Dev

在Python中以递归方式打印列表而无需更改列表

来自分类Dev

更改列表中数字的顺序而无需创建新的数字

来自分类Dev

模拟链接点击而无需移动其他链接

来自分类Dev

为什么需要在链接列表中存储下一个项目指针

来自分类Dev

为什么我需要双指针?

来自分类Dev

为什么以及何时需要双指针?

来自分类Dev

根据threepenny-gui中的列表框选择来更改其他元素

来自分类Dev

更改一个flex子级的位置,而无需手动将“ order”属性分配给其他子级

来自分类Dev

双链列表父指针更改

来自分类Dev

将stdout和stderr重定向到其他程序,而无需更改退出代码

来自分类Dev

使用jQuery .click从某些CSS类更改为其他类,而无需切换?

来自分类Dev

将分支指针移至其他提交而无需检出

来自分类Dev

为什么在回购中显示来源/头部,而在其他回购中不显示?

来自分类Dev

如何更改链接列表位置?

来自分类Dev

为什么我需要添加markForCheck()来触发Angular中的更改检测?

来自分类Dev

反映更改而无需在React中刷新

来自分类Dev

在MySQL中更改LIMIT而无需刷新

来自分类Dev

观察BlockingCollection中的更改而无需消耗

来自分类Dev

提交而无需更改

来自分类Dev

需要一个api来删除以特定字符启动的对象,而无需在方法内部使用其他集合

来自分类Dev

更改链接列表中的指针的地址时出现问题

来自分类Dev

指针值更改而无需显式分配

来自分类Dev

更改Wordpress模板中的链接而无需在数据库中创建表

来自分类Dev

UpdateOne mongodb,无需更改其他对象

Related 相关文章

  1. 1

    为什么其他列表也会更改?

  2. 2

    为什么我需要在Python中复制类实例,而无需复制其他对象类型?

  3. 3

    包含列表和其他数据类型的字典字符串,而无需更改python中的数据类型

  4. 4

    更改列表中的值而无需循环

  5. 5

    在其他Git分支中查看文件而无需更改分支

  6. 6

    在Python中以递归方式打印列表而无需更改列表

  7. 7

    更改列表中数字的顺序而无需创建新的数字

  8. 8

    模拟链接点击而无需移动其他链接

  9. 9

    为什么需要在链接列表中存储下一个项目指针

  10. 10

    为什么我需要双指针?

  11. 11

    为什么以及何时需要双指针?

  12. 12

    根据threepenny-gui中的列表框选择来更改其他元素

  13. 13

    更改一个flex子级的位置,而无需手动将“ order”属性分配给其他子级

  14. 14

    双链列表父指针更改

  15. 15

    将stdout和stderr重定向到其他程序,而无需更改退出代码

  16. 16

    使用jQuery .click从某些CSS类更改为其他类,而无需切换?

  17. 17

    将分支指针移至其他提交而无需检出

  18. 18

    为什么在回购中显示来源/头部,而在其他回购中不显示?

  19. 19

    如何更改链接列表位置?

  20. 20

    为什么我需要添加markForCheck()来触发Angular中的更改检测?

  21. 21

    反映更改而无需在React中刷新

  22. 22

    在MySQL中更改LIMIT而无需刷新

  23. 23

    观察BlockingCollection中的更改而无需消耗

  24. 24

    提交而无需更改

  25. 25

    需要一个api来删除以特定字符启动的对象,而无需在方法内部使用其他集合

  26. 26

    更改链接列表中的指针的地址时出现问题

  27. 27

    指针值更改而无需显式分配

  28. 28

    更改Wordpress模板中的链接而无需在数据库中创建表

  29. 29

    UpdateOne mongodb,无需更改其他对象

热门标签

归档