初始化双链表

时间:2016-10-14 03:49:08

标签: c++ linked-list segmentation-fault initialization

我一直在编写双链表的代码,但根据调试工具,存在一些分段错误。编译好但在运行中爆炸。

头文件

#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;
    }

1 个答案:

答案 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;
}

对于误导性的帖子感到抱歉,感谢您的帮助。