我正在用C语言写一个基于双向链表的代码。我错误地认为通过执行free(head_node)来删除头节点。我可以看到随着运行的进行,计算机变慢了(这显然是由于内存泄漏)。我搜索了stackoverflow和其他站点,我通常会遇到这样的代码来删除链表:
Node* current = head;
while( current != NULL ) {
Node* next = current->Next;
free( current );
current = next;
}
当我在我的代码中尝试这样做时,程序只是在free语句之后挂起,而不是返回到调用这个语句的函数。上面的代码是否与双向链表相
所以现在的挑战是尝试使用一个LinkedList L,并创建一个与L相反的新的LinkedList反转。我需要用一个forloop来完成这项工作。这就是我到目前为止所知道的:
public void ReverseL(Intco obj) {
ListNode p = obj.c;
ListNode RevL = c;
int index = obj.get_howmany();
if (obj.c != null) {
while (this.get_howmany() != obj.get_howmany()) {
p
链表
对于实际操作,链表的插入时间复杂度为O(1),但需要O(n)时间遍历到正确的位置。大多数在线资源将链接列表的平均插入时间列为O(1):
https://stackoverflow.com/a/17410009/10426919
https://www.bigocheatsheet.com/
https://www.geeksforgeeks.org/time-complexities-of-different-data-structures/
BST
二进制搜索树的插入需要遍历节点,所需时间为O(log )。
问题
Am I mistaken to believe that insert
我有一个非常简单的问题,我不能理解我应该如何进一步。
我有一个双向链表,其中第一个节点是空对象,最后一个节点是空对象。
我想在第一个节点和最后一个节点之间插入一个不同的字符串元素。例如,我有字符串元素"C","D","A","P“。
并且在插入到双向链表中之后。我需要一些这样的插入顺序-
FirstNullObject P D C A LastNullObject
所以我不确定我应该如何将null对象与我想要比较并继续添加的各种字符串进行比较。假设首先我要添加C,然后以某种方式在这两个空对象之间插入C。然后如果我添加D,那么我必须将D与C