初始化双链表

Initializing double linked list

本文关键字:链表 初始化      更新时间:2023-10-16

我一直在写这个代码的双链表,但根据调试工具有一些分割错误。编译良好,但在运行时爆炸。

头文件

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