linked-list 相关问题

链表是一种数据结构,其中元素包含对下一个(以及可选的前一个)元素的引用。链接列表提供O(1)插入和删除具有已知内存位置的任何元素,O(1)列表并置,以及前(和可选后)位置的O(1)访问以及O(1)下一个元素访问。随机访问和随机索引插入/移除具有O(n)复杂性并且通常是未实现的。

多用户线程库

我最初使用二维数组来存储用户创建的线程,但现在我想实现一个链表来做同样的事情。这导致代码无法正确创建线程,因此......

回答 0 投票 0

链表入队函数只增加一个节点并覆盖C中的前一个节点

我的链表入队函数遇到问题,每当我尝试入队多个节点时,它只会添加一个节点并覆盖前一个节点。这是函数的代码...

回答 0 投票 0

为什么会抛出类型错误?

有一个任务是找到链表的中间点。您能否解释一下为什么 while() 循环中的 fast.next 抛出“TypeError:无法读取 null 的属性(读取‘next’)”? 常数

回答 2 投票 0

不知道为什么内存错误改不了

打印完“3rd round”后,p出现异常,所以我们在delete_min函数中加入了初始化free(min_node)和min_node为NULL的部分。但是,堆内存错误

回答 0 投票 0

如何使用链表打印文件内容

编辑:没关系我真的做到了。 所以正如我在标题中所说,我正在尝试使用链接列表打印出文件的内容。 基本上我们得到一个 txt 文件来阅读,我们应该打印出 c...

回答 1 投票 0

Android 应用程序在尝试将 LinkedList 从 mainactivity 传递到 fragment oncreate 时在启动时崩溃

我遇到的情况是我被要求解析一个 xml 提要(工作正常)并将其作为对象存储在链表中。我正在尝试在我拥有的列表视图中显示这些对象的一部分

回答 0 投票 0

显示链表的元素

我想再问一些关于为什么我没有通过尝试通过链接列表来显示我的元素。 我正在关注一个关于此事的教程,但尽管看起来......

回答 2 投票 0

仅使用 1 个本地指针删除链表中的节点

K.N King 的《C 编程:一种现代方法》一书的练习摘录。如果我的解决方案的最后一部分不正确,我会寻求帮助。 修改 delete_from_list

回答 1 投票 0

队列的链表实现的递归反转

我正在学习队列并完成了队列的链表实现,现在我的任务是递归地反转队列。所以我尝试弹出第一个元素并调用

回答 1 投票 0

如何在不影响原始链表的情况下反转链表?

我想反转一个LinkedList,我写的基本程序如下:- 公共类 ListNode{ 整数值; 接下来是ListNode; 列表节点(){} ListNode(int val){this.val = val;} 列表节点(我...

回答 2 投票 0

我的程序没有打印出结果

我在c中做了一个链表来按顺序对文本文件中的单词进行排序。 insert 函数是在读到一行单词和意思用: 分隔后添加一个节点。该文件只是...

回答 0 投票 0

如何在具有两个值的 LinkedList 中获取值

!!!紧急!!! 我在链表中有三个变量(举个例子,StudentID,Group,Priority) 我为该程序使用了以下代码: 公共字符串 toString() { 系统输出原理...

回答 0 投票 0

C++链表如何使用复制赋值运算符

我必须使用复制构造函数和复制赋值运算符来测试链表。 list1 附加了 3 个双打 list2 = list1 复制构造函数进来的地方。 List4 = list3 = list1 是...

回答 1 投票 0

单链表如何不遍历删除一个元素?

这是确切的问题: 编写下面 delete_min_max 例程的实现,从“head”开始的链表中删除最大和最小元素并返回新头(如果

回答 0 投票 0

蛇游戏中的节点只跟随头节点

我好像不能让节点跟随前一个节点,节点只能跟随作为起始节点的头,我怎样才能让节点跟随前一个节点并进行蛇形运动,ple .. .

回答 2 投票 0

如何在不使用链表类的情况下从该链表中搜索和删除节点?

我目前正在练习数据结构,我正在尝试删除作为参数传递给方法的节点。该方法应该在列表中搜索 arg'd 歌曲,返回 n 的索引...

回答 2 投票 0

在 Java 中从 LinkedList 中删除一个元素的复杂性

我不明白为什么在 Java 中删除 LinkedList 中的元素的复杂度是 O(n)。 Java 中的 LinkedList 是一个 DoublyLinkedList。在理想的 DoublyLinkedList 中,每个元素都有一个字段 p...

回答 2 投票 0

修改链表时出现Segmentation Fault

我正在尝试编写一个程序来实现一个链表,并允许用户选择不同的功能来对列表执行。我遇到以下三个功能的问题: remove_v...

回答 0 投票 0

我试图合并两个列表,但我的合并功能运行不正常。当我调用合并函数时,程序就终止了

我试着用伪语句来找出问题所在。问题似乎出现在 merge() 函数的末尾 p->下一个=列表2;但我不知道问题出在哪里。 #包括 我试着用伪语句来找出问题所在。问题似乎出现在 merge() 函数的末尾 p->next=list2; 但我不知道问题是什么。 #include <iostream> using namespace std; int value, count, value2, count2,choice; struct node { int data; node * next; }; node *list = nullptr; node *list2 = nullptr; node * p; node * q; node * r; void insertFront() { cout << "ENTER A VALUE="; cin >> value; if (list == nullptr) { p = new node(); p->data = value; p->next = nullptr; list = p; } else { p = new node(); p->data = value; p->next = list; list = p; } } void insertFront2() { cout << "ENTER A VALUE="; cin >> value; if (list2 == nullptr) { r = new node(); r->data = value; r->next = nullptr; list2 = r; } else { r = new node(); r->data = value; r->next = list2; list2 = r; } } void delFront() { if (list == nullptr) { cout << "LIST IS ALREADY EMPTY"; } else { p = list; list = p->next; delete(p); } } void display(int choice) { int select=choice; if (select == 1) { p = list; } if (select == 2) { p = list2; } while (p != nullptr) { cout << p->data << " "; p = p->next; } cout << endl; } void mergeLists(node *list,node *list2) { if (list==nullptr and list2==nullptr){ cout<<"Both lists are empty"; } else if(list==nullptr && list2!=nullptr){ display(2); } else if(list2==nullptr && list!=nullptr){ display(1); } if(list!=nullptr && list2!=nullptr){ p=list; while(p!=nullptr){ p=p->next; } p->next=list2; display(1); } } int main() { int choice; cout << "1) Insert at front " << endl; cout << "2) Delete at front" << endl; cout << "7) Merge two lists" << endl; cout << "9) Display" << endl << endl; while (choice != 99) { cout << "Your choice:"; cin >> choice; switch (choice) { case 1: { int sel; cout << "Enter the list to which you want to enter:\n 1 or 2\nYour choice:"; cin >> sel; if (sel == 1) { insertFront(); } else if (sel == 2) { insertFront2(); } break; } case 2: { delFront(); break; } case 7: { mergeLists(list,list2); break; } case 9: { int sel; cout<<"Select a list to display: 1/2"<<endl; cin>>sel; display(sel); break; } case 99: { cout << "PROGRAM TERMINATED :)"; break; } } } return 0; } 在merge()内部,您正在循环list直到p变成nullptr,因此当您尝试在循环后访问p时nullptr是p->next。 您需要修复循环以在它到达最后一个节点时停止,而不是在它经过最后一个节点时停止,例如: void mergeLists(node *list, node *list2) { if (!list && !list2){ cout << "Both lists are empty"; } else if (!list && list2){ display(2); } else if (!list2 && list){ display(1); } else { p = list; while (p->next){ p = p->next; } p->next = list2; display(1); } }

回答 1 投票 0

在链表循环检测的问题中,我写了这段代码并得到了分割错误

在这个测试用例中,我遇到了分段错误 在 gfg 的链表问题中检测循环 // 184 // 这是存在循环的值 73 39 71 24 28 71 31 14 35 60 3 48 45 43 76 33 5 75 44 59 4...

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.