# include <stdio.h>
# include <math.h>
# include <string.h>
# include <stdlib.h>
typedef struct Lnode
{
int data;
struct Lnode* next;
}Lnode, * Linklist;
void main()
{
Linklist tailinsert(Linklist L);
int length(Linklist L);
Linklist L = NULL;
puts("input data of linklist:");
L = tailinsert(L);
int len = length(L);
int findlast(Linklist L, int n);
int last = findlast(L, len);
printf("the last one is: %d", last);
free(L);
}
int findlast(Linklist L, int n)
{
Linklist headq = L;
Linklist headh = L->next;
if (headh == NULL)
{
return 0;
}
int m = 0, i = 1;
while (m < n - 1)
{
if (headh == NULL)
{
headh = L->next;
headq = L;
}
if (i == 3)
{
headq->next = headh->next;
free(headh);
headh = headq->next;
i = 1;
m++;
}
else
{
headq = headq->next;
headh = headh->next;
i++;
}
}
return L->next->data;
}
Linklist tailinsert(Linklist L)
{
Lnode* s, *r;
int x;
L = (Linklist)malloc(sizeof(Lnode));
r = L;
scanf("%d", &x);
while (x != 9999)//输入9999时结束给结点编号
{
s = (Lnode*)malloc(sizeof(Lnode));
s->data = x;
r->next = s;
r = s;
scanf("%d", &x);
}
r->next = NULL;
return L;
}
int length(Linklist L)
{
Lnode* p = L->next;
int i = 0;
while (p)
{
p = p->next;
i++;
}
return i;
}
n个人围成,从1个人顺序报号1,2,3。凡报到3者退出圈子,最后只剩下一个人,输出这个人的序号。
最新推荐文章于 2022-12-05 19:02:51 发布