朋友发了一道约瑟夫的猜想过来,以前用的是直接算的方法,今天用了一下环形链表...
其实写这个的目的是为了往空间里面塞点东西..
比较简陋 (元素为10的环形链表):
#include<stdio.h>
struct stu
{
int num;
struct stu *p;
};
//=====================================================
int main()
{
stu peo;
stu *p1,*p2,*head;
head=p1=p2=&peo;
peo.num=1;
for(i=2; i<=10 ; ++i)
{
p1=(stu *)malloc(sizeof(stu));
p1->num=i;
p2->p=p1;
p2=p1;
}
p1->p=head; '把最后一个元素的P指向开始的那个元素,就是头尾相连
for(i=0 ; i<20 ; ++i)
{
printf("%d",p1->num);
p1=p1->p;
}
//循环输出
}
写的点不伦不类...最开始的那个应该放堆区..算了 原谅我吧