我一直在写这个代码的双链表,但根据调试工具有一些分割错误。编译良好,但在运行时爆炸。
头文件#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;
}
谢谢你的回复,我本来期待更多关于这件事的信息,但我设法弄清楚了。此外,我忘了补充,上面发布的代码不是完整的代码(因为它超过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;
}