小休比 发表于 2018-5-22 23:09:39

请帮我看看这哪里错了,队列的创建以及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);
        }
       
}

BngThea 发表于 2018-5-23 09:01:48

InitQueue调用的时候为什么要传&q?
你的q定义的时候已经是指针了
后面的push和pop函数也是

小休比 发表于 2018-5-23 13:50:09

BngThea 发表于 2018-5-23 09:01
InitQueue调用的时候为什么要传&q?
你的q定义的时候已经是指针了
后面的push和pop函数也是

感谢大佬,我知道了
页: [1]
查看完整版本: 请帮我看看这哪里错了,队列的创建以及for循环简单的输入数据输出数据,但是哪里错