知识点:链表
链表是由用任意一组存储单元存放元素的动态数据结构。链表中的元素是由数据域和指针域组成的结点,结点的指针域指向下一个结点。
放一个链表讲解比较详细的文章链接:http://blog.csdn.net/jiange_zh/article/details/50727070
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1216
题目分析:
这道题用链表进行筛选法筛数,解题时使用数组模拟链表。
解题代码:
#include
#include
#include
int top;
int res[3011];
struct Node{
int v;
int next;
};
Node L[50001];
int N;int main()
{
int i,j,k,p;
for(i=2;i<=49999;i++)
{
L[i].v=i;
L[i].next = i+1;
}
L[50000].v=50000;
L[50000].next=-1;
top=1;
for(i=2;L[i].next!=-1;i=L[i].next)
{
res[top++]=L[i].v;
if( top>=3001 ) break;
j=i;
while(L[j].next!=-1)
{
k=0;
while(L[j].next!=-1&&k
{
k++;
p = j;
j = L[j].next;
}
if(L[j].next!=-1)
{
L[p].next=L[j].next;
}
}
}
while(1)
{
scanf("%d",&N);
if(N==0) break;
printf("%d\n",res[N]);
}
return 0;
}
网友评论