C ++程序中双向链表的未处理异常

时间:2019-07-20 04:20:30

标签: c++ visual-studio data-structures linked-list

我在Visual Studio 2013中编写了一个用于双链表的程序,它在带有注释的行上抛出了未处理的异常错误:-

linked_list_double.h:-

#pragma once
#include<iostream>

template <typename T>
struct Node
{
    T data;
    Node *next, *prev;
};

template <typename T>
class doubleLinkedList
{
private:
    Node<T> *top;
public:
    doubleLinkedList()
    {
        top = nullptr;
    }

    void add(T data)
    {
        Node<T> *temp = new Node<T>;

        temp->prev = nullptr;
        temp->next = top;
        top->prev = temp;     //unhandled exception here
        top = temp;
    }

    void display()
    {
        Node<T> *temp;
        temp = top;
        std::cout<<"nullptr<--->\n";
        while(temp)
        {
            std::cout<<temp->data<<"<--->";
            temp = temp->next;
        }
        std::cout<<"nullptr\n";
    }
};

main.cpp:-

#include "linked_list_double.h"

int main()
{
    doubleLinkedList<int> L;

    L.add(3);
    L.add(4);
    L.display();

    return 0;
}

错误是:-

Unhandled exception at 0x011C4B79 in dataStructures2.exe: 0xC0000005: Access violation writing location 0x00000008.

我以前从未写过双向链表。我不确定程序中是否存在逻辑错误。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

import numpy as np np.random.seed(0) size = 32000 base_arr = np.arange(size)*10 t1 = np.random.randint(0,6, size)+base_arr t2 = np.random.randint(5,10, size)+base_arr A = np.vstack((t1,t2)).T v = np.sort(np.random.randint(0,10,3*size)+np.repeat(base_arr,3)) 在首次添加时为空。因此,在top为空的情况下尝试遵循的任何尝试都会崩溃。

对此深有感触

top

执行以下操作:

    top->prev = temp;     //unhandled exception here