这个问题应该很简单
#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 ;}