繁体   English   中英

如果我使用 memmove() (在 C 中)删除链表中的节点会更有效吗?

[英]For deleting a node in a linked list if I use memmove() (in C) will it be more efficient?

我在互联网上遇到的关于删除链表中节点的每个示例,他们都使用这种方法删除第一个节点:

Algorithm to delete first node of Singly Linked List
%%Input:  head of the linked list
Begin:
    If (head != NULL) then
        toDelete ← head
        head ← head.next
        unalloc (toDelete)
    End if
End

在这段代码中,他们从列表中删除了第一个节点后释放了内存区域。 但是我正在使用 memove() 删除链表的第一个节点。

...
if (key == 1){ 
    memmove(head, head->next, sizeof(node));
    return;
}
...

那么,当我使用 memmove() 时,它会自动释放内存区域吗?? 我的代码效率更高吗??

在您的代码头中是一个指针,它是一个标量,因此使用memmove不会比简单的赋值更快。 在复制较大的对象时, memmove功能会很有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM