请帮我看看这哪里错了,队列的创建以及for循环简单的输入数据输出数据,但是哪里错
#include<stdio.h>#include<stdlib.h>
typedef int ElemType;
#define N 10
typedef struct Line
{
ElemType data;
struct Line *next;
}Node,*QNode;
typedef struct{
QNode front;
QNode rear;
}Queue;
int InitQueue(Queue *q)
{
q->front=q->rear=(QNode)malloc(sizeof(struct Line));
if(!q->front)
{
exit(0);
}
q->front->next=NULL;
return 0;
}
void Push(Queue *q,ElemType e)
{
QNode k;
k=(QNode)malloc(sizeof(struct Line));
if(!k)
{
exit(0);
}
k->data=e;
k->next=NULL;
q->rear->next=k;
q->rear=k;
}
void Pop(Queue *q,ElemType *e)
{
if(q->front==q->rear)
{
exit(0);
}
QNode k;
k=q->front->next;
*e=k->data;
q->front->next=k->next;
if(q->rear==k)
{
q->rear=q->front;
}
free(k);
}
void Destroy(Queue *q)
{
while(q->front){
q->rear=q->front->next;
free(q->front);
q->front=q->rear;
}
}
void main()
{
Queue *q;
int i,e;
InitQueue(&q);
printf("输入你想输入的数:\n");
for(i=0;i<N;i++)
{
scanf("%d",&e); //我感觉这里有问题,但不知道哪里错了,求解答。
Push(&q,e);
}
printf("输出结果为:");
for(i=0;i<N;i++)
{
Pop(&q,&e);
printf("%d ",e);
}
} InitQueue调用的时候为什么要传&q?
你的q定义的时候已经是指针了
后面的push和pop函数也是 BngThea 发表于 2018-5-23 09:01
InitQueue调用的时候为什么要传&q?
你的q定义的时候已经是指针了
后面的push和pop函数也是
感谢大佬,我知道了
页:
[1]