作业帮 > 综合 > 作业

这是我编的约瑟夫环问题 可是为什么执行到delete p;这一句就会发生异常呢?

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/05/03 09:23:43
这是我编的约瑟夫环问题 可是为什么执行到delete p;这一句就会发生异常呢?
#include
using namespace std;
typedef struct DNode
{
int data;
struct DNode *next;
}DNode;
class Dlinklist{
DNode *dlist;
public:
void JGame(int e);
};
void Dlinklist::JGame(int e)
{
DNode *head,*rear;
int item;
int n=0;
dlist=new DNode;
//dlist->prior=NULL;
dlist->next=NULL;
head=dlist;
rear=dlist;
int flag=1;
while(flag){
coutitem;
if(item!=0)
{
dlist=new DNode;
dlist->data=item;
dlist->next=head;
rear->next=dlist;
rear=dlist;
n++;
}
else flag=0;
}
DNode *p;
p=head;
while(n)
{
for(int i=0;inext;
rear=p;
}
cout
这是我编的约瑟夫环问题 可是为什么执行到delete p;这一句就会发生异常呢?
帮忙给你改了一下,程序现在完全满足题目要求,实现了约瑟夫环问题:
#include
using namespace std;
typedef struct DNode
{
int data;
struct DNode *next;
}DNode;
class Dlinklist{
public:
DNode *dlist;
void JGame(int e);
};
void Dlinklist::JGame(int e)
{
DNode *head,*rear;
int item;
int n=0;
dlist=new DNode;
dlist->next=dlist;//形成循环链表
head=dlist;
rear=dlist;
int flag=1;
while(flag){
coutitem;
if(item!=0)
{
dlist=new DNode;
dlist->data=item;
dlist->next=head->next;
rear->next=dlist; //在尾部插入
rear=dlist;
n++;
}
else flag=0;
}
DNode *p,*q; //多附设一个指针
q=head;
while(n)
{
p=q;
for(int i=0;inext;
}
cout>e;//输入报数上限值
dlink.JGame(e);
}
自己看看在什么地方改动了,请加分吧.