C语言调试时出现”Unhandled exception 0xC0000005;Access Violation“ 怎么解决?

语法没错,调试时输入后,跳出一个提示“Unhandled exception 0xC0000005;Access Violation”
直接运行时,输入后,自动停止程序。

我调试出来的错误显示是因为if语句中的指针,请问要怎么改??求大家指导指导!先谢了!

int ADDQ(PWindows w,PClient_node NewNode){        /*进队列,排队*/
    PClient_node p=w->front,q=NULL;        /*q用来追踪p指针*/
    int flag=0; 
    while(p){        /*根据优先级排队*/
        if(NewNode->peo.prior==3)
             if(p->peo.prior<3){
                 NewNode->next=p;
                 if(flag)
                     q->next=NewNode;    
            }
            else{        /*如果队首是VIP三级客户,则新来的VIP三级客户需排到他(她)的后面*/
                q=p;
                p=p->next;
                flag=1;
                continue;
            }
        else if(NewNode->peo.prior==2)
             if(p->peo.prior<2){
                 NewNode->next=p;
                 if(flag)
                     q->next=NewNode;
                break;    
            }
            else{        /*如果队首是VIP三、二级客户,则新来的VIP二级客户需排到他(她)们的后面*/
                q=p;
                 p=p->next;
                 flag=1;
                 continue;
            }
        else if(NewNode->peo.prior==1)
             if(p->peo.prior<1){
                NewNode->next=p;
                 if(flag)
                     q->next=NewNode;
                break;    
            }
            else{        /*如果队首是VIP三、二、一级客户,则新来的VIP一级客户需排到他(她)们的后面*/
                q=p;
                 p=p->next;
                 flag=1;
                 continue;
            }
        else{
             w->rear->next=NewNode;        /*在队尾插入结点*/
            w->rear=NewNode;            /*修改尾指针*/
            break;
        }
    }
    w->line++;
    w->traffic++;
    return 1; 

}

以下是队列结构:

typedef struct client_information{            /*顾客信息*/
    char name[C];                        /*姓名*/ 
    char bank_card[5];                    /*银行卡号*/ 
    float money;                        /*存款金额*/
    int prior;        /*1,2,3,0分别为VIP三级,二级,一级和普通顾客*/
    int w_time;        /*顾客办理业务等待时间*/ 
    int numb;        /*顾客的顺序号*/
}Client, *CLIENT;

typedef struct client_node{            /*每个窗口接待的每个顾客(结点)*/    
    Client peo;        /*队列(每个窗口接待的每个顾客)*/ 
    struct client_node *next;
}Client_node,* PClient_node;

typedef struct WINDOWS{            /*链队列结构(窗口信息)*/
    PClient_node front;  // 队列头指针
    PClient_node rear;  //队列尾指针 
    int traffic; // 接待顾客量(入队列数)
    int line; // 正在排队人数(当前队列长度) 
    int num; //窗口号
    double total_time;//所用人在银行总用时
}Windows,* PWindows;


下面是队列的初始化:

int init_windows(PWindows w){          /*开辟队列基地址,并初始化队列*/ 
    w->front=(PClient_node)malloc(sizeof(Client_node));
    if(!w->front)
        return 0;
    w->rear=w->front;
    w->front->next=NULL;
    w->line=0;
    w->traffic=0;
    w->total_time=0;
    return 1;
}

https://blog.csdn.net/hannibaychty/article/details/42399891
可以参考