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;
}
求求各位大神帮助一下,谢谢了