2018-01-23

知识点:链表

链表是由用任意一组存储单元存放元素的动态数据结构。链表中的元素是由数据域和指针域组成的结点,结点的指针域指向下一个结点。

放一个链表讲解比较详细的文章链接: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;

}

推荐阅读更多精彩内容