#include"c1.h"
#include"c2.h"
int chose()
{
int i;
printf("*******************************\n");
printf("* 试验 2 约瑟夫环 *\n");
printf("*******************************\n");
printf(" 1、创建约瑟夫环 \n");
printf(" 2、开始游戏 \n");
printf(" 3、退出 \n");
printf("*******************************\n");
printf("请选择:");
fflush(stdin);
scanf("%d",&i);
printf("\n");
return i;//返回选项
}
void InitList(LinkList &L)
{ // 操作结果:构造一个空的线性表L
L=(LinkList)malloc(sizeof(struct LNode)); // 产生头结点,并使L指向此头结点
if(!L) // 存储分配失败
exit(OVERFLOW);
L->next=NULL;
}
int ListLength(LinkList L)
{ // 初始条件:L已存在。操作结果:返回L中数据元素个数
int i=0;
LinkList p=L->next; // p指向头结点
while(p)
{
i++;
p=p->next;
}
return i;
}
Status ListInsert(LinkList &L,int i,ElemType e) // 改变L
{ // 在L的第i个位置之前插入元素e
LinkList p=L,s; // p指向头结点
int j=0;
while(p&&j<i-1) // 寻找第i-1个结点
{
p=p->next;
j++;
}
if(!p||j>i-1)return ERROR;
s=(LinkList)malloc(sizeof(struct LNode)); // 生成新结点
s->data=e; // 插入L中
s->num=i;
s->next=p->next;
p->next=s;
return OK;
}
void ListTraverse(LinkList L)
{
// 初始条件:L已存在。
LinkList p=L->next; // p指向第一个结点
while(p) // p不指向头结点
{
printf("%d号位置人持密码为 %d\n",p->num,p->data);
p=p->next;
}
printf("\n");
}
Status ListDelete(LinkList &L,int i,ElemType &e,int x) // 改变L
{
LinkList p=L;
LinkList q;
int cout;
for(cout=1;cout<=x;cout++){
int j=0;
if(i<=0) // 第i个元素不存在
return ERROR;
while(j<i-1) // 寻找第i-1个结点
{
p=p->next;
j++;
}
q=p->next; // q指向待删除结点
p->next=q->next;
e=q->data;
printf("%d ",q->num);
i=e;
}
return OK;
}
约瑟夫环 数据结构练习
需积分: 14 18 浏览量
2011-07-04
15:05:56
上传
评论 1
收藏 387KB RAR 举报
yanghuanbei
- 粉丝: 1
- 资源: 12
最新资源
- 自动驾驶定位系列教程十:闭环修正.pdf
- HM2333-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- Python实现插入排序算法(源代码)
- 123.cpp
- HM2319-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- modbus4j-3.0.4.jar
- 蒙特·卡罗实验、使用蒙特·卡罗方法计算圆周率近似值.docx
- HM2319A-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- JAVA SpringBoot 集成华为云OBS,多镜像配置settings
- 一个文件共享系统,包括前端文件展示系统和后台管理系统,基于SpringBoot + MyBatis实现
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈