33,311
社区成员
发帖
与我相关
我的任务
分享
#include "stdafx.h"
#include "stdlib.h"
typedef struct QNode
{
int Data;
struct QNode *pNext;
}QNode,*pQNode;
typedef struct Queque
{
QNode* font;
QNode *rear;
}Que;
Que *InitQueque();
bool EnQue(Que *q,int data);
bool QuePrint(Que *q);
void ReleaseQue(Que*q);
void main(int argc, char* argv[])
{
Que *q=InitQueque();
for(int i=0;i<10;i++) EnQue(q,i);
QuePrint(q);
ReleaseQue(q);
}
Que *InitQueque()
{
Que *q=(Que*)malloc(sizeof(Que));
if(!q) return NULL;
QNode *pd=(QNode*)malloc(sizeof(QNode));
if(!pd) return NULL;
q->rear=q->font=pd;
q->font->pNext=NULL;
return q;
}
bool EnQue(Que *q,int data)
{
if(!q) return false;
QNode *node=(QNode *)malloc(sizeof(QNode));
if(!node) return false;
node->Data=data;
node->pNext=NULL;
q->rear->pNext=node;
q->rear=node;
return true;
}
bool QuePrint(Que *q)
{
QNode*p=q->font->pNext;
if(!p) return false;
while(p)
{
printf("%d\n",p->Data);
p=p->pNext;
}
return true;
}
void ReleaseQue(Que*q)
{
QNode*p=q->font->pNext;
QNode *p1=NULL;
if(p==NULL) return;
while(p)
{
p1=p->pNext;
free(p);
p=p1;
}
q->font=q->rear=NULL;
}
看这里
bool EnQue(Que *q,int data)
{
if(!q) return false;
QNode *node=(QNode *)malloc(sizeof(QNode));
if(!node) return false;
node->Data=data;
node->pNext=NULL;
q->rear->pNext=node;
q->rear=node;
return true;
}
知道了没??为什么rear是指向最后一个元素的下一个元素