数据结构实验报告_约瑟夫环
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
using namespace std;
typedef struct Node
{
int num;
int key;
struct Node *next;
}Node,*LinkList;
void main()
{
int n,m;
cout<<"请输入人数:";
cin>>n;
while(n<=0){
cout<<"人数不合法,请重新输入:";
{
cout<<p->num<<"号的密钥为"<<p->key<<endl;
p=p->next;
}
cout<<endl;
for(i=1;i<=n;i++)
{
for(int k=1;k<m;k++)
p=p->next;
q=p->next;
m=q->key;
cout<<"第"<<i<<"个出列的是"<<q->num<<"号"<<endl;
数据结构实验
题目:约瑟夫环
一、问题描述
用循环单链表实现约瑟夫环。
二、概要设计及存储表示
建立不带头结点的循环单链表,通过循环语句实现结点指针的传递及结点的删除,并输出删除的节点顺序。
每个结点分别存储一个序号及一个密钥两个变量,以及指向下一结点的指针。
三、调试分析
1.结点建立时发现错误,忘记结点应存储两个数据。
head->key=rand()%20+1;
p = head;
for(int i=2;i<=n;i++)
{
q = = i;
q->key = rand()%20+1;
p->next = q;
p = q;
}
p->next = head;
p = head;
for(i=1;i<=n;i++)
解决方法:新增一个整型数据到结点中。
2.对结点key成员的赋值是用随机数的方法,设定随机数种子错误导致每次获得的随机数都一样
解决方法:将随机数种子设定为时间。
3.在最后出列顺序的循环中指针的传递写错。
解决方法:重写指针传递。
四、结果
五、代码附表
#include<iostream>
#include<ctime>
cin>>n;
}
cout<<"请输入第一个密钥:";
cin>>m;
while(m<=0){
cout<<"密钥不合法,请重新输入:";
cin>>m;
}
srand((unsigned)time(NULL));
LinkList head,p,q;
head = new Node;
head->num = 1;
p->next=q->next;
free(q);
}
system("pause");
}
typedef struct Node
{
int num;
int key;
struct Node *next;
}Node,*LinkList;
void main()
{
int n,m;
cout<<"请输入人数:";
cin>>n;
while(n<=0){
cout<<"人数不合法,请重新输入:";
{
cout<<p->num<<"号的密钥为"<<p->key<<endl;
p=p->next;
}
cout<<endl;
for(i=1;i<=n;i++)
{
for(int k=1;k<m;k++)
p=p->next;
q=p->next;
m=q->key;
cout<<"第"<<i<<"个出列的是"<<q->num<<"号"<<endl;
数据结构实验
题目:约瑟夫环
一、问题描述
用循环单链表实现约瑟夫环。
二、概要设计及存储表示
建立不带头结点的循环单链表,通过循环语句实现结点指针的传递及结点的删除,并输出删除的节点顺序。
每个结点分别存储一个序号及一个密钥两个变量,以及指向下一结点的指针。
三、调试分析
1.结点建立时发现错误,忘记结点应存储两个数据。
head->key=rand()%20+1;
p = head;
for(int i=2;i<=n;i++)
{
q = = i;
q->key = rand()%20+1;
p->next = q;
p = q;
}
p->next = head;
p = head;
for(i=1;i<=n;i++)
解决方法:新增一个整型数据到结点中。
2.对结点key成员的赋值是用随机数的方法,设定随机数种子错误导致每次获得的随机数都一样
解决方法:将随机数种子设定为时间。
3.在最后出列顺序的循环中指针的传递写错。
解决方法:重写指针传递。
四、结果
五、代码附表
#include<iostream>
#include<ctime>
cin>>n;
}
cout<<"请输入第一个密钥:";
cin>>m;
while(m<=0){
cout<<"密钥不合法,请重新输入:";
cin>>m;
}
srand((unsigned)time(NULL));
LinkList head,p,q;
head = new Node;
head->num = 1;
p->next=q->next;
free(q);
}
system("pause");
}