双向链表,尾部插入显示错误,为什么?

图片说明

目测InsertNode_End的第二个if中==写成=了。

下次提问请帖出代码(用"代码片"格式化)。这样才好帮你调试。

// Q755014.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"


#include <iostream>
using namespace std;

typedef struct Dlist 
{
    Dlist* p_Prev;
    int data;
    Dlist* p_Next;
}Dlist;

void Initialization(int data, Dlist ** list)
{
    Dlist * p = new Dlist; 
    p->data = data;

    p->p_Next = NULL;
    p->p_Prev = NULL;
    *list = p;
}

void InsertNode_head(int data, Dlist ** list)
{
    Dlist * p = new Dlist; 
    p->data = data;
    p->p_Next = *list;
    p->p_Prev = NULL;
    *list = p;
}
void InsertNode_end(int data,Dlist*list)
{
    while (list->p_Next != NULL)   
    {
        list = list->p_Next;
    }

    Dlist * p = new Dlist; 
    p->data = data;        
    p->p_Next = NULL;      
    p->p_Prev = list;  
    list->p_Next = p;
}

void print(Dlist*list)
{
    while (list != NULL)   
    {
        cout << list->data << " ";
        list = list->p_Next;
    }
}

int main()
{
    Dlist* list = new Dlist;
    Initialization(1, &list);
    InsertNode_head(2, &list);
    InsertNode_head(4, &list);
    InsertNode_end(4, list);
    print(list);
    getchar();
}