前天笔试有个约瑟夫环的问题,怪不得人家没通知我面试,原来我的约瑟夫环做的确实有问题,昨天晚上又重新做了下,下面上源代码:
/*
file:osephu.cpp author:www.5dkx.com
*/
#include
using namespace std;
typedef struct Node{
int sort;
struct Node *next;
}Link,*List;
int Init(List *p); //初始化双链表
int Insert(List *p,int key); //插入节点
void Print(List p); //打印双链表
void CreateOsep(List p,int n); //初始化约瑟夫环void osehup(List p,int m,int len,List Re); //计算约瑟夫环出列顺序,并存放在Re链表中
int main()
{
int m,n;
List p,Re;
Init(&p);
Init(&Re);
cout<
cin>>n;
cout<
cin>>m;
CreateOsep(p,n);
cout<
osehup(p,m,n,Re);
cout<
return 1;
}
//初始化
int Init(List *p)
{
*p = (List)malloc(sizeof(Link));
if(!(*p))
{
cout<
}
else
{
(*p)->next=*p;
//(*p)->sort=1;
}
return 1;
}
//插入节点
int Insert(List *p,int key)
{
List tmp = (List)malloc(sizeof(Link));
if(!tmp)
{
cout<
}
else
{
tmp->sort=key;
tmp->next=(*p)->next;
(*p)->next=tmp;
*p=tmp;
}
return 1;
}