读书人

这个有关问题应该很简单

发布时间: 2012-03-28 15:40:03 作者: rapoo

这个问题应该很简单

C/C++ code
#include <stdio.h>#include <malloc.h>#include <stdlib.h>#define TRUE 1#define FALSE 0typedef struct Node{    int date ;    struct Node *pNext ;}NODE, * PNODE ;typedef struct ListQueue{    PNODE pFront ;    PNODE pRear ;}LISTQUEUE, *PLISTQUEUE;void InitList(PLISTQUEUE pLq) ;void Insert(PLISTQUEUE pLq, int val) ;int TraversList(PLISTQUEUE pLq) ;int main(void){    LISTQUEUE LQ ;    InitList(&LQ) ;    Insert(&LQ, 1) ;    Insert(&LQ, 2) ;    Insert(&LQ, 3) ;    TraversList(&LQ) ;    return 0;}void InitList(PLISTQUEUE pLq){    pLq->pFront = (PNODE)malloc(sizeof(NODE)) ;   /* 创建一个无效节点,并为其分配一个内存空间,让pL->pFront指向这个内存空间 */    if (NULL == pLq->pFront)    {        printf("动态内存分配失败!\n") ;        exit(-1) ;    }    else    {        pLq->pFront = pLq->pRear ;            /* 让pFront,pRear都指向这个无效节点 */        pLq->pRear->pNext = NULL ;                      [color=#FF0000]/* 我调试的时候运行到这里程序挂了*/[/color]    }}void Insert(PLISTQUEUE pLq,int val){    PNODE pNew = (PNODE)malloc(sizeof(NODE)) ;    if (NULL == pNew)    {        printf("动态内存分配失败!");        exit(-1);    }        pNew->date = val ;    pNew->pNext = NULL ;    pLq->pRear->pNext = pNew ;    pLq->pRear = pNew ;}int TraversList(PLISTQUEUE pLq){    PNODE p  = pLq->pFront ;    if (pLq->pRear == pLq->pFront)    {        printf("队列为空,遍历失败!\n") ;        return FALSE ;    }    while (pLq->pRear != p)    {        printf("%d ", p->date) ;        p = p->pNext ;    }    printf("\n") ;    return TRUE ;}


[解决办法]
探讨

void InitList(PLISTQUEUE pLq)
{
pLq->pFront = (PNODE)malloc(sizeof(NODE)) ; /* 创建一个无效节点,并为其分配一个内存空间,让pL->pFront指向这个内存空间 */
if (NULL == pLq->pFront)
{
printf("动态内存分配失败!\n") ……

[解决办法]
void InitList(PLISTQUEUE pLq)
{
pLq->pFront = (PNODE)malloc(sizeof(NODE)) ;
if (NULL == pLq->pFront)
{
printf("动态内存分配失败!\n") ;
exit(-1) ;
}
else
{
pLq->pRear = pLq->pFront;//细节决定成败!
pLq->pRear->pNext = NULL ;
}

}
[解决办法]
探讨

void InitList(PLISTQUEUE pLq)
{
pLq->pFront = (PNODE)malloc(sizeof(NODE)) ;
if (NULL == pLq->pFront)
{
printf("动态内存分配失败!\n") ;
exit(-1) ;
}
else
{
……

读书人网 >C语言

热点推荐