这学期学数据结构,第一个实验是约瑟夫环...写了一下
#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); // 标志生成结点成功
}
}