小弟我今天遇到了链队的问题,请求各位高手解决,
算法如下:
#include “stdio.h”
#include “malloc.h”
typedef char ElemType;
#define NULL 0
typedef struct qnode
{
ElemType data;
struct qnode *next;
}QNode;
typedef struct
{
QNode *front;
QNode *rear;
}LiQueue;
void InitList(LiQueue *q) /*初始化l*/
{
q=(LiQueue *)malloc(sizeof(LiQueue));
q->front=q->rear=NULL;
}
int QueueEmpty(LiQueue *q) /*判断为空*/
{
if(q->rear==NULL)
return 1;
else
return 0;
}
void enQueue(LiQueue *q,ElemType e) /*入队*/
{
QNode *s;
s=(QNode *)malloc(sizeof(QNode));
s->data=e;
s->next=NULL;
if(q->rear==NULL)
q->front=q->rear=NULL;
else
{
q->front->next=s;
q->rear=s;
}
}
int deQueue(LiQueue *q,ElemType e) /*出对*/
{
QNode *t;
if(q->rear==NULL)
return 0;
t=q->front;
if(q->front==q->rear)
q->front=q->rear=NULL;
else
q->front=q->front->next;
e=t->data;
free(t);
return 1;
}
void DispQueue(LiQueue *q) /*显示链队元素*/
{
QNode *p=q->front;
while(p!=NULL)
{
printf(“%c”,p->data);
p=p->next;
}
printf(“\n”);
}
int QueueLength(LiQueue *q) /*求链队长度*/
{
QNode *p=q->front;
int i=0;
while(p!=NULL)
{
i++;
p=p->next;
}
return i;
}
void ClearQueue(LiQueue *q) /*销毁*/
{
QNode *p=q->front, *r;
if(p!=NULL)
{
r=p->next;
while(r!=NULL)
{
free(p);
p=r;
r=p->next;
}
}
free(q);
}
main()
{
LiQueue *q;
InitList(q);
enQueue(q,’a');
enQueue(q,’b');
enQueue(q,’c');
enQueue(q,’d');
DispQueue(q);
ClearQueue(q);
}
不知道哪里出错,总是得不到a b c d;
>> 本文固定链接: http://www.vcgood.com/archives/2816
>> 转载请注明: Hongtashang 2008年10月11日 于 C语言帝国 发表
不好意思做为初学者
我只有给你顶起