我一直在编写双链表的代码,但根据调试工具,存在一些分段错误。编译好但在运行中爆炸。
头文件
#ifndef LIST_H_INCLUDED
#define LIST_H_INCLUDED
struct Node
{
int data;
Node* next; //next node
Node* prev; //prev node
};
typedef struct
{
Node* first; //aims to first node
Node* last; //aims to last node
} List;
void initList(List &l);
链接列表cpp
#include <cstddef>
#include "List.h"
void initList(List &l)
{
l.first->data = -1;
l.first = NULL;
l.first->prev = NULL;
l.last->data = -2;
l.last->next = NULL;
l.last->prev = NULL;
}
主
#include <iostream>
#include <stdio.h>
#include "List.h"
using namespace std;
int main()
{
List nlist;
initList(nlist);
return 0;
}
答案 0 :(得分:0)
感谢回复,我期待更多关于此事的亮点,但我设法弄清楚了。此外,我忘了补充说上面发布的代码不是完整的代码(因为它超过100多行,我专注于我认为的问题)
分段故障来自if语句,该语句涉及许多其他功能。
你正在谈论的构造函数。
Node* initNode(int data)
{
Node* nNode = new Node;
nNode->data = data;
nNode->next = NULL;
nNode->prev = NULL;
return nNode;
}
和分段故障实际上的功能。
bool isEmpty(List l)
{
if((l.first->next == NULL) && (l.last->prev == NULL))
{
return true;
}
else
return false;
}
对于误导性的帖子感到抱歉,感谢您的帮助。