猫喵鱼 发表于 2022-5-20 18:30:35

这个错误怎么改'return' : cannot convert from ',会就会,不会就别BB

本帖最后由 猫喵鱼 于 2022-5-21 20:15 编辑

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
typedef int DataType;/*定义DataType为int类型*/
typedef struct qnode/*链队列存储类型*/
{
        DataType data;    /*定义结点的数据域*/
    struct qnode*next; /*定义结点的指针域*/
} LinkListQ;
typedef struct
{
LinkListQ *front,*rear; /*定义队列的队头指针和队尾指针*/
}LinkQueue;/*链队列的头指针类型*/


int InitQueue(LinkQueue *Q)
{   /*初始化链队列函数*/
    Q->front=Q->rear=(LinkListQ *)malloc (sizeof(qnode));
        if(!Q->front)
        {
          exit(0);
        }
        Q->front->next=NULL;
        return Q;
}

int EmptyQueue(LinkQueue *Q)
{   /*判断队空函数*/
    if(Q->front==Q->rear) /*链队为空*/
        {
                return 1;
        }
    else
        {
         return 0;
        }
}

int InQueue(LinkQueue *Q,DataType x)
{ /*入队函数*/
   LinkListQ *p;
   p=(LinkListQ *)malloc(sizeof(LinkListQ)); /*生成新结点*/
   p->data=x; /*将x存入新结点的数据域*/
   p->next=NULL;
   Q->rear->next=p; /*将新结点插入链队之后*/
   Q->rear=p; /*队尾指针指向队尾元素*/
}

int DeQueue(LinkQueue *Q , DataType *x)
{ /*出队函数*/
   LinkListQ *p; //调用判空函数EmptyQueue(Q),判断队列是否为空
   if(EmptyQueue(Q))
       {
       printf("队空,不能出队元素!");
      return 0;
       }
   else   /*队不为空*/
       {
               p=Q->front->next; /*p 指向队头元素*/
         *x=p->data;/*队头元素取出赋给x*/
Q->front->next=p->next;/*队头指针的指针域存放新队头元素的地址*/
   if(p->next==NULL) /*队列中只含有一个元素出队*/
Q->rear=Q->front; /*出队后队尾指针指向队头指针,此时队空*/
   free(p); /*释放原队头结点空间*/
return 1;
       }
}

int GetFront(LinkQueue *Q,DataType *x)
{
        /*获取队头元素函数*/
    if(EmptyQueue(Q))/*调用判空函数Emptyeueue(Q),判断队列是否为空*/
    {
                printf("队空,无队头元素!");
    return 0;
        }
    else /*队不为空*/
        {
      *x=Q->front->next->data; /*队头元素赋给变量x*/
       return 1;
        }
}

int ShowQueue(LinkQueue *Q)
{/*显示队中元素函数*/
LinkListQ *p=Q->front->next;
    if(p==NULL)
printf("队列为空,无元素!");
    else
        {
       printf("从队列元素起栈中各元素为:");
       while(p!=NULL)
           {
         printf("%5d",p->data);
         p=p->next;
           }
        }
}
void MenuQueue ()
{/*显示菜单子函数*/
printf("\n               队列子系统");
printf("\n================================|");
printf("\n|\t\t 1——初始化队列         |");
printf("\n|\t\t 2——入队操作             |");
printf("\n|\t\t 3——出队操作             |");
printf("\n|\t\t 4——求队头元素         |");
printf("\n|\t\t 5——显示队中所有元素   |");
printf("\n|\t\t 0——返回               |");
printf("\n================================|");
printf("\n请输入菜单号(0-5) :");
}

void main()
{
        int i,n,flag;
    LinkQueue *Q;
    DataType x;
    char ch1,ch2,a;
ch1='y';
while(ch1=='y'||ch1=='Y')
{
        MenuQueue();
scanf("%c",&ch2);
getchar();
      switch(ch2)
                {
                case '1':
      InitQueue(Q);
      printf("队列的初始化完成!");
      break;
                case '2':
printf("请输入要入队的元素个数:");
scanf("%d",&n);
printf("请输入%d个整数进行入队:",n);
                for(i=0;i<n;i++)
                                {
                      scanf("%d",&x);
                      InQueue(Q,x);
                                }
                      printf("入队操作完成");
                break;
                case'3':
printf("请输入要出队的元素个数:");
scanf("%d",&n);
printf("出队的元素顺序依次为:");
               for(i=0;i<n;i++)
                           {
    flag=DeQueue(Q,&x);
printf("%5d",x);
                           }
      if(flag==1)
printf("\n出队操作成功!");
      else
printf("\n出队操作失败!");
      break;
                case '4':
       if(flag=GetFront(Q,&x))
printf("当前的队头元素值为:%d",x);
break;
                case '5':
      ShowQueue(Q);
break;
                case '0':
        ch1='n';break;
                default:
                printf("输入有误,请输入0-4进行选择!");
                }
                if(ch2!='0')
                {
                        printf("\n按回车键继续,按任意键返回主菜单!\n");
                  a=getchar();
                if(a!='\xA')
                {
               getchar();ch1='n';
                }
                }
}
}

wp231957 发表于 2022-5-21 06:17:20

这东西还是要自己写,自己调试
因为首先你就无法保证书上的代码百分之百能正确运行

猫喵鱼 发表于 2022-5-21 10:46:41

我就是因为不会写,才求助大神,你不要告诉我你学了几个月的代码就会自己写。{:5_106:}

ExiaGN001 发表于 2022-6-26 19:33:51

本帖最后由 ExiaGN001 于 2022-7-4 06:56 编辑

猫喵鱼 发表于 2022-5-21 10:46
我就是因为不会写,才求助大神,你不要告诉我你学了几个月的代码就会自己写。

int InitQueue(LinkQueue *Q)
{   /*初始化链队列函数*/
    Q->front=Q->rear=(LinkListQ *)malloc (sizeof(qnode));
      if(!Q->front)
      {
          exit(0);
      }
      Q->front->next=NULL;
      return Q;
}
这里不能return Q,Q是LinkQueque*,不能以int形式返回
修改代码如下
void InitQueue(LinkQueue *Q)
{   /*初始化链队列函数*/
    Q->front=Q->rear=(LinkListQ *)malloc (sizeof(qnode));
      if(!Q->front)
      {
          exit(0);
      }
      Q->front->next=NULL;
//如果有用,请设置最佳答案
}

ExiaGN001 发表于 2022-7-4 06:56:31

int InitQueue(LinkQueue *Q)
{   /*初始化链队列函数*/
    Q->front=Q->rear=(LinkListQ *)malloc (sizeof(qnode));
      if(!Q->front)
      {
          exit(0);
      }
      Q->front->next=NULL;
      return Q;
}
这里不能return Q,Q是LinkQueque*,不能以int形式返回
修改代码如下
void InitQueue(LinkQueue *Q)
{   /*初始化链队列函数*/
    Q->front=Q->rear=(LinkListQ *)malloc (sizeof(qnode));
      if(!Q->front)
      {
          exit(0);
      }
      Q->front->next=NULL;
//如果有用,请设置最佳答案
}
页: [1]
查看完整版本: 这个错误怎么改'return' : cannot convert from ',会就会,不会就别BB