芸萱萱 发表于 2015-4-30 17:51:15

队列,小甲鱼老师布置的课后习题,我的代码如下,但是设置成红色那里报错.,求帮忙

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef char ElemType;
//定义一个结点
typedef struct QNode
{
        ElemType data;
        struct QNode *next;
}QNode,*QueuePtr;
typedef struct
{
        QueuePtr front,rear;
}LinkQueue;
//创建一个队列,即队列的初始化
void initQueue(LinkQueue*q)
{
        q->front=q->rear=(QueuePtr)malloc(sizeof(QNode));
        if(!q->front)
                exit(0);
        q->front->next=NULL;
}
//入队,p加入这个队列
void InsertQueue (LinkQueue *q,ElemType e)
{
        QueuePtr p;
        p=(QueuePtr)malloc(sizeof(QNode));
        if(p==NULL)
                exit(0);
        p->data=e;
        p->next=NULL;
        q->rear->next=p;
        q->rear=p;
}
//出队列操作出队列操作是将队列中的第一个元素移出,队头指针不发生改变,改变头结点的next指针即可。
void DeleteQueue(LinkQueue *q,ElemType *e)
{
        QueuePtr p;
        if(q->front==q->rear)
                return;
        p=q->front->next;
        *e=p->data;
        q->front->next=p->next;
        if(q->rear==p)
                q->rear=q->front;
        free(p);
}
//销毁一个队列
void DestroyQueue(LinkQueue *q)
{
        while(q->front)
        {
                q->rear=q->front->next;
                free(q->front);
                q->front=q->rear;
        }
}
int main()
{
        QueuePtr s;
    ElemType c;
    char x ;
    initQueue(&s);

    printf("输入任意一串字符,以#作为结束标志\n");

    scanf("%s",x);

    while(c!='#')
    {
      printf("%c",x);
    }
    printf("\n");
   return 0;
}





sfdjhwfjwg 发表于 2015-12-4 21:24:19

LinkQueue s;
char x ;
initQueue(&s);应该这样定义

1748504919 发表于 2015-12-5 15:07:57

有道理

淫令天下 发表于 2015-12-5 16:23:29

二楼正解!
页: [1]
查看完整版本: 队列,小甲鱼老师布置的课后习题,我的代码如下,但是设置成红色那里报错.,求帮忙