删除节点不起作用

时间:2016-08-16 20:39:01

标签: c++

我试图删除链接列表上的节点但是在删除命令之后我试图在节点内显示数据,我仍然可以显示所谓的已删除数据。搜索是我试图删除的节点

int position=0;
  while(admintemp !=NULL)
    {
        position=position+1;
        if(admintemp==search)
        {
            cout<<"found"<<position;
            getch();
            break;

        }   
        admintemp = admintemp->next;    
    }


    node *body = new node;
    node *admintemp = new node;
    if(position>0)
    {
        admintemp = adminhead;

        for (int i= 1;i<position;i++)
        {
            body = admintemp;
            admintemp = admintemp->next;
        }
        body->next=admintemp->next;
        cout<<"deleting";
        getch();
        delete admintemp;
    }    

1 个答案:

答案 0 :(得分:2)

通过delete d指针读取数据是&#34;未定义的行为&#34; - 意味着编译器可以做它喜欢的事情而你的程序没有任何意义。

可能获得您期望的结果,可能发生崩溃,可能让恶魔飞出你的鼻子。没有办法说出来。该程序无效,任何行为都可以。根据C ++标准的规则,程序员有责任调用未定义的行为 - 可能编译并运行,但是你已经破坏了规则,所以编译器没有义务做任何理智(或甚至任何事情)。