文章

145

粉丝

143

获赞

21

访问

39.2k

头像
击鼓传花 题解:C++
P1018 贵州大学机试题
发布于2024年2月1日 16:29
阅读数 387

#include <stdio.h>
#include <stdlib.h>

typedef struct node{
	int data;
	struct node* next;
}LNode,*LinkList;

//初始化无头循环链表 
void InitList(LinkList &L,int n)
{
	int i;
	L = (LNode *)malloc(sizeof(LinkList));
	L = NULL;
	struct node *s,*p;
	for(i = 1; i <= n; i++)
	{
		s = (LNode *)malloc(sizeof(LinkList));
		s->data = i;
		if(!L) 
		{
			L = s;
			p = L;
			L->next = NULL;
		}
		else
		{
			s->next = NULL;
			p->next = s;
			p = s;
		} 
	}
	p->next = L;
}

//击鼓传花
int  Pass_flower(LinkList &L,int n)
{
	int k = 1;
	struct node *p = L,*q,*qre;
	while(n != 1)
	{
		k = 2;
		q = p->next;
		qre = p;
		while(k < 3)
		{
			qre = q;
			q = q->next;
			k++;
		}
		if(n != 1) 
		{
			qre->next = q->next;
			free(q);
			q = qre->next;
			n--;
		}
		p = q;
	}
	return p->data;
}

int main()
{
	int n;
	LinkList L;
	scanf("%d",&n);
	InitList(L,n);
	printf("%d",Pass_flow...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发