约瑟夫问题循环链表实现
来源:互联网 发布:db2客户端连接数据库 编辑:程序博客网 时间:2024/05/16 12:33
#include"stdio.h"
#include"stdlib.h"
#include"malloc.h"
typedef struct Node
}NODE,* PNODE;
PNODE create_list(void)
{
int i;
int len;
printf("请输入总人数:");
scanf("%d",&len);
PNODE pHead=(PNODE)malloc(sizeof(NODE));
if(pHead==NULL)
{
printf("动态分配失败!");
exit(-1);
}
pHead->pNext=pHead;
PNODE pTial=pHead;
for(i=1;i<=len;i++)
{
PNODE pNew=(PNODE)malloc(sizeof(NODE));
if(pNew==NULL)
{
printf("动态分配失败!");
exit(-1);
}
pNew->data=i;
pNew->pNext=pTial->pNext;
pTial->pNext=pNew;
pTial=pNew;
}
return pHead;
}
void treavese_list(PNODE pHead)
{
PNODE p;
p=pHead->pNext;
while(p!=pHead)
{
printf("%d ",p->data);
p=p->pNext;
}
printf("\n");
return;
}
void search_list(int n,int s,int m)
{
int i,j,k;
PNODE q,r,Head;
if(n<s)
{
printf("查找失败!\n");
return;
}
Head=create_list();
treavese_list(Head);
printf("\n");
printf("\n");
q=Head;
for(k=1;k<s;k++)
{
q=q->pNext;
}
for(i=1;i<n;i++)
{
for(j=1;j<m;j++)
{
q=q->pNext;
if(q==Head)
{
q=q->pNext;
}
}
if(q->pNext==Head)
{
q=Head;
}
r=q->pNext;
printf("%d\n",r->data);
q->pNext=r->pNext;
free(r);
}
printf("%d\n",Head->pNext->data);
}
int main()
{
int n,s,m;
PNODE r;
printf("Intput n, s and m:");
scanf("%d%d%d",&n,&s,&m);
search_list(n,s,m);
return 0;
}
#include"stdlib.h"
#include"malloc.h"
typedef struct Node
{
int data;
struct Node * pNext;}NODE,* PNODE;
PNODE create_list(void)
{
int i;
int len;
printf("请输入总人数:");
scanf("%d",&len);
PNODE pHead=(PNODE)malloc(sizeof(NODE));
if(pHead==NULL)
{
printf("动态分配失败!");
exit(-1);
}
pHead->pNext=pHead;
PNODE pTial=pHead;
for(i=1;i<=len;i++)
{
PNODE pNew=(PNODE)malloc(sizeof(NODE));
if(pNew==NULL)
{
printf("动态分配失败!");
exit(-1);
}
pNew->data=i;
pNew->pNext=pTial->pNext;
pTial->pNext=pNew;
pTial=pNew;
}
return pHead;
}
void treavese_list(PNODE pHead)
{
PNODE p;
p=pHead->pNext;
while(p!=pHead)
{
printf("%d ",p->data);
p=p->pNext;
}
printf("\n");
return;
}
void search_list(int n,int s,int m)
{
int i,j,k;
PNODE q,r,Head;
if(n<s)
{
printf("查找失败!\n");
return;
}
Head=create_list();
treavese_list(Head);
printf("\n");
printf("\n");
q=Head;
for(k=1;k<s;k++)
{
q=q->pNext;
}
for(i=1;i<n;i++)
{
for(j=1;j<m;j++)
{
q=q->pNext;
if(q==Head)
{
q=q->pNext;
}
}
if(q->pNext==Head)
{
q=Head;
}
r=q->pNext;
printf("%d\n",r->data);
q->pNext=r->pNext;
free(r);
}
printf("%d\n",Head->pNext->data);
}
int main()
{
int n,s,m;
PNODE r;
printf("Intput n, s and m:");
scanf("%d%d%d",&n,&s,&m);
search_list(n,s,m);
return 0;
}
1 0
- 单向循环链表实现约瑟夫问题
- 用循环链表实现约瑟夫问题
- 约瑟夫问题简单实现-循环链表
- C++循环链表实现约瑟夫问题
- 约瑟夫问题--循环链表实现
- 循环链表 约瑟夫环问题实现
- 约瑟夫环问题循环链表实现
- 约瑟夫问题循环链表实现
- 约瑟夫问题(循环链表实现)
- 循环链表实现约瑟夫问题
- 约瑟夫问题循环链表实现
- 循环链表实现约瑟夫问题
- 循环链表实现约瑟夫问题
- 循环链表实现约瑟夫问题
- 循环链表实现约瑟夫问题
- 循环链表实现约瑟夫问题,拉丁方阵问题
- 约瑟夫问题 循环链表实现和数字处理实现
- 约瑟夫问题-循环链表
- 自定义View小心得
- delphi学习笔记开头篇
- Text Justification
- php5.3 安装xdebug2.1.2
- 机器学习相关——协同过滤
- 约瑟夫问题循环链表实现
- 一个优美的架构需要考虑的几个问题
- Jenkins(三)——MSBuild
- 阿里巴巴离职DBA 35岁总结的职业生涯
- 【基础练习】【贪心】codevs1214 线段覆盖题解
- Hello Maven Android
- Java 中使用Sax技术解析XML文档
- 基于Select模型的匿名聊天室v1.0
- CentOS下的JDK安装(.rpm文件)