这学期学数据结构,第一个实验是约瑟夫环...写了一下
#include <stdio.h>
struct node{
int id;
int password;
struct node* next;
}l;//l结构体实例
main(){
l.password=1;//初始化l
l.id=1;
l.next=&l;
initl(5);
del(3);
}
del(int i)//删除结点函数,i为初始数人的值
{
struct node* p;
struct node* next;
int j;
next=&l;
for(j=1;j<=5;j++)//这个循环是为了看是否形成了环
{
printf("id为%d的下个结点为%d ",next->id,next->next->id);//
next=next->next;
}
next=&l;//重新让next指向l
while (next->id!=next->next->id)
{
for(j=1;j<=i;j++) next=next->next;//进行数到第i个,在下面删除
p=next->next;
printf("del elem %d ",p->id );
next->next=next->next->next;
i=next->password;//将第i个的密码做为下次的查人个数
}
printf("complete");
scanf("%d",&i);
}
initl(int i)
{
struct node* p,*next;
int j;
next=&l;
for (j=2;j<=i;j++)
{
p=(struct node*)malloc(sizeof(struct node));
next->next=p;
next=p;
p->id=j;
p->password =rand();
p->next=&l;
printf("create node id=%d password=%d ",p->id,p->password);//标志生成结点成功
}
}
#include <stdio.h>
struct node{
int id;
int password;
struct node* next;
}l;//l结构体实例
main(){
l.password=1;//初始化l
l.id=1;
l.next=&l;
initl(5);
del(3);
}
del(int i)//删除结点函数,i为初始数人的值
{
struct node* p;
struct node* next;
int j;
next=&l;
for(j=1;j<=5;j++)//这个循环是为了看是否形成了环
{
printf("id为%d的下个结点为%d ",next->id,next->next->id);//
next=next->next;
}
next=&l;//重新让next指向l
while (next->id!=next->next->id)
{
for(j=1;j<=i;j++) next=next->next;//进行数到第i个,在下面删除
p=next->next;
printf("del elem %d ",p->id );
next->next=next->next->next;
i=next->password;//将第i个的密码做为下次的查人个数
}
printf("complete");
scanf("%d",&i);
}
initl(int i)
{
struct node* p,*next;
int j;
next=&l;
for (j=2;j<=i;j++)
{
p=(struct node*)malloc(sizeof(struct node));
next->next=p;
next=p;
p->id=j;
p->password =rand();
p->next=&l;
printf("create node id=%d password=%d ",p->id,p->password);//标志生成结点成功
}
}