65,211
社区成员
发帖
与我相关
我的任务
分享#include "stdafx.h"
#include "windows.h"
#define TOTALCOUNT 30
typedef struct node
{
int nNumber; // 当前节点在链表中的位置
node* pkNext;
}*PNODE;
int naArray[15] = {0}; // 存储链表中的节点位置
PNODE CreateCircle() // 建立循环链表
{
PNODE pHead = new node;
PNODE pText = pHead;
for (int i = 0; i < TOTALCOUNT - 1; i++)
{
pText->nNumber = i;
pText->pkNext = new node;
pText = pText->pkNext;
}
pText->nNumber = TOTALCOUNT - 1;
pText->pkNext = pHead;
return pHead;
}
void HandleNode(PNODE pStart) // 从第一个起每数9个出圈
{
int nCount = 0;
int nNumber = 0;
while (nCount < 15)
{
nNumber++;
if (nNumber == 8)
{
nNumber = 0;
naArray[nCount] = pStart->pkNext->nNumber;
nCount++;
PNODE pTemp = pStart->pkNext;
pStart->pkNext = pStart->pkNext->pkNext;
delete pTemp;
}
pStart = pStart->pkNext;
}
}
void PrintNode()
{
for (int i = 0; i < sizeof(naArray) / sizeof(int); i++)
{
cout << naArray[i] << endl;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
PNODE pHead = CreateCircle();
HandleNode(pHead);
PrintNode();
return 0;
}
#include <vector>
#include <iostream>
using namespace std;
void sort1(int distance/*步长*/, int max/*总数*/, int size/*排序个数*/, vector<int> &ret/*返回结果*/)
{
int pos[max+1];
memset(pos, 1, (max+1)*sizeof(int));
pos[0]=0;//位置0不用...
int current = 0;
for(i=0;i<size;i++)
{
int temp = 0;
while(temp!=distance)
{
current =(++current )%(max+1);
temp+=pos[current ];
}
pos[current ]=0;
ret.push_back(current );
}
}
void main()
{
vector<int> ret ;
sort1(9, 30, 15, ret);
for(int i=0;i<ret.size();i++)
cout<<ret[i]<<endl;
}
#include <stdio.h>
void main()
{
char Queue[30];
int i=0;
for(i;i<30;i++)
Queue[i] = '#';
i=1;
int count = 0;
int iExit = 0;
while(iExit !=15)
{
if(Queue[count%30] == '%')
{
count++;
continue;
}
if(i % 9 == 0)
{
Queue[count%30] = '%';
iExit++;
}
i++;
count++;
}
printf("%s \n",Queue);
}