首页 > 用户发贴区 > 编程问题提问区 > 跪求高手解决 C语言链队问题
2008
10-11

跪求高手解决 C语言链队问题

小弟我今天遇到了链队的问题,请求各位高手解决,


算法如下:


#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;




跪求高手解决 C语言链队问题》有 1 条评论

  1. 星情飞飞 说:

    不好意思做为初学者

    我只有给你顶起

留下一个回复