文章
28
粉丝
230
获赞
23
访问
244.2k
#include <stdio.h>
#include <stdlib.h>
typedef struct LNode
{
int Number;
struct LNode * next;
} LNode;
int main(int argc, char const *argv[])
{
int key,N,count;
count=1 ;//设count为传递次数
key = 2 ;//用于给每一个元素编号
scanf("%d",&N);
LNode *C = (LNode *)malloc(sizeof(LNode));
C->Number = 1 ;
LNode *S=C;
while ((N-1) != 0){//尾插法建表(无头结点)
LNode *p = (LNode *) malloc (sizeof(LNode));
p->Number = key ;
S->next = p ;
S = p ;
key ++;
N--;
}
S->next = C;//使单链表=>循环单链表
LNode *r = C;//设置访问指针r
LNode *pre = r;//pre指针指向r。作r的前驱
while(r ->next != r){//最后一个结点时跳出循环
if (count == 3)//传递次数累计3次,进行元素删除
{
pre->next = r ->next;
r=pre->next ;
count = 1;//重置传递次数count
}else {
pre = r ;
r = r->next;
count ++ ;
}
}
printf("%d",r->Number);//打印输出最后一个结点的Number值
return 0;
}
登录后发布评论
暂无评论,来抢沙发