【发布时间】:2021-11-02 02:57:21
【问题描述】:
编辑:刚刚尝试做while (temp != NULL && newNode->info > temp->info){,但由于某种原因仍然无法正常工作,我尝试输入 5 和 4 并再次出现分段错误
对不起,我对这个有点陌生,我正在尝试制作一个排序的单链表。我不确定它有什么问题,如果有人可以帮助我解决这个问题,我将不胜感激?
我可能输入了几个值,但由于某种原因每次输入不同数量的值(不是因为我输入了 -1)。然后它只是说“发生异常。分段错误。”在这个特定的行上,我不知道为什么,因为我小心地比较值而不是内存地址:
while (newNode->info > temp->info){
完整代码:
#include <iostream>
using namespace std;
class node {
public:
int info;
node *next;
node (int data, node *ptr = 0) {
info = data;
next = ptr;
}
};
class osll{
public:
node *head, *tail;
osll(){
head = tail = 0;
}
bool isEmpty(){
return head == 0;
}
void sort(int input){
node *newNode = new node (input);
if (isEmpty()){
newNode ->next = head;
head = newNode;
if (tail == 0)
tail = head;
}
if (newNode ->info > head ->info){
node *temp = head;
while (newNode->info > temp->info){
temp = temp ->next;
}
// will figure out how to link newNode to
// whatever temp value that stops here
// once this error goes away
}
}
};
int main () {
osll l;
int input = 0;
while (input != -1) {
cout << "Enter a value: ";
cin >> input;
l.sort(input);
}
return 0;
}
【问题讨论】:
-
如果
temp变成空指针,你的while循环会发生什么? -
您输入的是什么值?我刚刚输入了大量的随机数,从未引起过段错误。
-
您是否尝试先搜索互联网?我相信我在上周看到了相同的问题标题。
-
在while循环中检查
temp != NULL -
看来,如果我继续以递减的方式添加值,它仍然有效,但直到增加它似乎不起作用,所以 5 4 3 2 1 有效,但 5 4 3 88 返回了分段故障信息
标签: c++ pointers segmentation-fault nodes singly-linked-list