linked-list 相关问题

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

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

这是确切的问题: 编写下面 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

如何创建数据结构并使用字符串命名?

我有一个对象的 LinkedList,其中包含字符串值,例如名称、工作、位置。我的任务是将列表中的所有对象按位置分类到多个其他列表中。我不确定...

回答 0 投票 0

如何使用java语言解决矩阵问题? [关闭]

如何用java语言解决??你可以帮帮我吗? 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述 矩阵将从 matrix.txt 文件中读取。这...

回答 0 投票 0

为什么这个方法只打印链表中的一个对象?

我目前正在编写一个程序,该程序应该使用链表来模拟播放列表管理器。我的一种方法应该使用已经创建的 toS 打印出播放列表中的所有歌曲...

回答 0 投票 0

C 中的链表运行不正常[关闭]

给出的提示: 用 C 语言创建链表程序,并使用函数来导航和修改列表。循环必须递归地完成。以下是所需的功能: isempty():如果为空则返回真,...

回答 0 投票 0

2 个单链表的第一个交集 - 时间和空间复杂度?

我写的这个方法的时间和空间复杂度是多少,它返回两个单链表之间的第一个节点的交集(如果没有找到空值)? 公共节点

回答 1 投票 0

为什么链表实现不起作用

所以,我正在尝试学习java中链表的实现。我创建了一个在开始时插入的方法,但是当我通过 main 运行它时,我没有看到返回任何输出。 类列表节点{ 国际大...

回答 1 投票 0

LinkedList 不保存新条目

我有一个函数可以通过在按字母顺序令人满意的位置插入节点来修改列表。我正在打印列表并注意到所有节点都成为新节点(https://i.stack.img ...

回答 0 投票 0

如何实现链表的打印和清除功能?

问题是创建和实现头文件的类实现。我正在为如何为这个 LinkedList 类实现打印和清除功能而苦恼。打印功能 m...

回答 0 投票 0

为什么我的代码在 IDE 中使用与 LeetCode 中相同的测试用例,但在 LeetCode 中这段代码不起作用?

LeetCode上的问题: https://leetcode.com/problems/remove-nth-node-from-end-of-list/description/ 结构列表节点 { 整数值; 列表节点 *下一个; ListNode() : val(0), next(nullptr) {} ...

回答 1 投票 0

如何在选择选项 5 后阻止程序自行终止

我正在做一个在链表的特定位置插入节点的功能。 除了选项 5) 在特定位置插入和 9) 显示之外,一切都运行良好。 如果我选择 5),...

回答 1 投票 0

LinkedList 的推送功能

我正在处理链表并尝试有效地使用 malloc。我创建了一个容器结构和一个节点结构。节点结构有 2 个成员数据和下一个节点的地址。

回答 1 投票 0

C 中的堆栈和动态内存

Exercise:从用户那里读取一行并以相反的顺序打印单词。考虑到问题的性质,我实现了一个单链表来存储单词,然后从 ...

回答 1 投票 0

单向循环列表的快速排序[关闭]

我无法理解如何快速排序单链循环列表,我写了这段代码: void quickSort(Node*& head, Node* start, Node* end) { 节点*中=开始; 对于 (int i = 0; i < getIndex(

回答 0 投票 0

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