qq_43474780
和乐i
2020-07-17 16:05

循环链表初始化无法完成,求大佬解惑

  • c++
  • c语言

代码如下,初始化中的“初始化成功”一句都没有打印出来

#include<iostream> 
#include<malloc.h>
#include<conio.h>
#define MAXSIZE 6
using namespace std;

typedef int datatype;
struct sequeue{
    datatype data[MAXSIZE];
    int front,rear; 
};
struct sequeue *sq;

//初始化
sequeue *SetNULLQ(sequeue *sq)
{
    sq->front=MAXSIZE-1;
    sq->rear=MAXSIZE-1;
    cout<<"初始化成功"<<endl;
    return sq;
} 

//入队
sequeue *EnQueueQ(sequeue *sq,datatype x)
{
    if(sq->front==((sq->rear+1)%MAXSIZE))
    {
        cout<<"队伍已满,无法入队"<<endl;
        return sq; 
    }
    else
    {
        sq->rear=(sq->rear+1)%MAXSIZE;
        sq->data[sq->rear]=x;
        cout<<x<<"已入队"<<endl;
        return sq;
    }
}

//出队 
sequeue *DeQueueQ(sequeue *sq)
{
    if(sq->front==sq->rear)
    {
        cout<<"队伍为空,无法出队"<<endl;
        return NULL; 
    }
    else
    {
        sq->front=(sq->front+1)%MAXSIZE;
        cout<<"队头已出队"<<endl;
        return sq;
    }
}

//取队头元素
datatype *GetFrontQ(sequeue *sq)
{
    if(sq->front==sq->rear)
    {
        cout<<"队伍为空,无法取队头元素"<<endl;
        return NULL; 
    }
    else
    {
        datatype *ret;
        ret=(datatype *)malloc(sizeof(datatype));
        *ret=sq->data[(sq->front+1)%MAXSIZE];
        return ret; 
    } 

}

int main()
{
    sq=SetNULLQ(sq);
    datatype x;
    while((x=getche())!='#')
    {
        sq=EnQueueQ(sq,x);
    }
    cout<<"当前队头为"<<GetFrontQ(sq)<<endl;
    sq=DeQueueQ(sq);
    cout<<"当前队头为"<<GetFrontQ(sq)<<endl;
}
  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

2条回答

为你推荐