回 帖 发 新 帖 刷新版面

主题:[讨论]链队列的程序?大家看看哦!

链队列,大家帮忙改改啊!
#include "stdio.h"
struct linkqueue
{int data;
 struct linkqueue *next;
};
struct queue
{
 struct linkqueue front;
 struct linkqueue rear;
};
void struct queue *enqueue(struct queue *q,int e)
{
 struct linkqueue *p;
 p=(struct linkqueue *)malloc(sizeof (struct linkqueue *));
 p->data=e;
 p->next=NULL;
 (q->rear)->next=p;
 q->rear=p;
}
void struct queue *dequeue(struct queue *q,int *e)
{
 if(q->front==q->rear)
   printf("error\n");
 p=q->front->next;
 e=p->data;
 q->front->next=p->next;
 if(q->rear==p)
 q->rear=q->front;
 free(p);
}
main()
{
 struct queue *q;
 struct linkqueue *p;
 q->front=(struct queue *)maloc(sizeof(struct queue *));
 q->rear=(struct queue *)malloc(sizeof(struct queue *));
 q->front->next=NULL;
 enqueue(q,3);
 enqueue(q,4);
 enqueue(q,2);
 dequeue(q,3);
 whilie(p)
 {printf("%5d\n",p->data);
 p=p->nxet;}
}

回复列表 (共4个回复)

沙发

你要怎么改?

板凳

就是要改对啊,我的程序有很多低级的错误呀,不太懂的,根据书上算法写的。

3 楼

#include<stdio.h>
#include<malloc.h>
#define null 0
struct linkqueue
{int data;
 struct linkqueue *next;
};
struct queue
{
 struct linkqueue *front;
 struct linkqueue *rear;
};
void enqueue(struct queue *q,int e)
{
 struct linkqueue *p;
 p=(struct linkqueue *)malloc(sizeof (struct linkqueue));
 p->data=e;
 p->next=null;
 q->rear->next=p;
 q->rear=p;
}

void dequeue(struct queue *q)
{
 int e;
 struct linkqueue *p;
 if(q->front==q->rear)  printf("error\n");
 p=q->front->next;
 e=p->data;
 q->front->next=p->next;
 if(q->rear==p)
 q->rear=q->front;
 free(p);
}
main()
{
 struct queue *q;
 struct linkqueue *p;
 q=(struct queue *) malloc (sizeof(struct queue));
 q->front=q->rear=(struct linkqueue *) malloc (sizeof (struct linkqueue));
 q->front->next=null;
 enqueue(q,3);
 enqueue(q,4);
 enqueue(q,2);
 dequeue(q);
 p=q->front;
 while(p!=q->rear)
 {
   p=p->next;
   printf("%d\n",p->data);

 }
}
建议你重新看一下c语言的结构体部分

4 楼

while(p!=q->rear)//改为:while(p!=NULL)
 {
   p=p->next;
   printf("%d\n",p->data);

 }

我来回复

您尚未登录,请登录后再回复。点此登录或注册