马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
void main(){
CLinkList *list,*head,*temp;
list=(CLinkList*)malloc(sizeof(CNode));
head=list;//暂存头节点
list->data=0;
list->next=head;
for(int i=1;i<=41;i++){
CLinkListAdd_wei(list,i);//尾插法初始化循环链表
}
for(int i=1;i<=41;i++){
list=list->next;
}//list后移到最后一个节点
temp=list;//temp指向尾节点(即头结点前一节点)
list=head;//list重新指向头结点
int i=1;
while(list->next!=list){
if(list->data==0){//删除头结点和已经自杀的节点
temp->next=list->next;//工作指针后移
list=list->next;
//懒得free了
continue;
}else if(i%3==0){
printf("%d ",list->data);//输出自杀的人
list->data=0;
}
temp=list;//重新指向list前一节点
list=list->next;//工作指针后移
i++;//计数器
}
printf("%d",list->data);//输出最后一个,因为只剩最后一个节点时已跳出循环
}
后期可以通过宏定义实现任意人数和间隔的问题。 |