m0_51581430 2020-10-30 21:57 采纳率: 100%
浏览 610
已采纳

program received signal SIGFPE问题

1.链队进行输出的时候出现program received signal SIGFPE问题,找了很久都无法
解决

#include<iostream>
using namespace std;
typedef int ElemType;

//创建链表的数据结点类型 
typedef struct Listnode
{
    ElemType data;
    Listnode *next;
}Listnode;

//创建链表结点类型 
typedef struct
{
    Listnode *front; //队头指针 --- 指向头结点 
    Listnode *rear;  //队尾指针 --- 指向尾结点 
}Sqnode;

//初始化链表
void Init_node(Sqnode *&q)
{
    q = new Sqnode;
    q->front = q->rear = NULL; // 因为队头就是链表的头结点,所以让其指向NULL,又因为队尾指向尾结点,此时头结点即是尾结点 
} 

//销毁链表
void Destroy_node(Sqnode *&q)
{
    Listnode *pre = q->front,*p;
    if(pre)
    {
        p = pre->next;
        while(p)
        {
            delete pre;
            pre = p;
            p = p->next;
        }
    }
    delete pre;
} 

//判断链表是否为空
bool Empty(Sqnode *q)
{
    return (q->rear == NULL);
} 

//进队
void Enter_Queue(Sqnode *&q,ElemType e)
{
    Listnode *pnew;       // 创建一个新的结点 
    pnew = new Listnode;
    pnew->data = e;       
    pnew->next = NULL;  //由于队列是队尾插入,所以新结点的下一个指向为空 
    if(Empty(q)) //若队列为空,则头结点即是尾结点即是pnew 
    {
        q->front = q->rear = pnew;
    }
    else
    {
        q->rear->next = pnew; // 若不为空,尾结点即是新的结点 
        q->rear = pnew;
    }
} 

//出队 --- 队头出 --- 所以首结点出队 
bool De_Queue(Sqnode *&q,ElemType &e)
{
    Listnode *p; 
    if(Empty(q)) // 若链表为空,没有结点,返回假 
    {
        return false;
    }
    p = q->front; //先让辅助指针指向头结点 
    if(q->front == q->rear) //若只有一个结点即头结点,指向空即可 
    {
        q->front = q->rear = NULL;
    }
    else
    {
        q->front = q->front->next; // 首结点出队 
        e = p->data;
        delete p;
        return true;
    }
} 

//遍历所有结点
void display(Sqnode *q)
{
    Listnode *p;
    if(Empty(q))
    {
        return;
    }
    else
    {
        p = q->front;
        while(p != NULL)
        {
            p = p->next;
            cout << p->data << " ";
        } 
    }
} 

int main(void)
{
    Sqnode *q;
    Init_node(q);
    int choice;
    while(1)
    {
        cout << "1.排队 2.就诊 3.查看排队 4.下班 请选择:";
        cin >> choice;
        switch(choice)
        {
            case 1:
                ElemType e;
                cout << "----->>请输入病历号:";
                cin >> e;
                Enter_Queue(q,e);
                cout << "排队的病人依次是:";
                display(q);
                cout << endl << endl; 
                break;
            //case 2:

        }
    }
    return 0;
}

求求各位大神帮助一下,谢谢了

  • 写回答

1条回答 默认 最新

  • 小学狗喵喵叫 2020-10-31 09:13
    关注
    void display(Sqnode* q)
    {
        Listnode* p;
        if (Empty(q))
        {
            return;
        }
        else
        {
            p = q->front;
            while (p != NULL)
            {
                cout << p->data << " ";
                p = p->next;
            }
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分