C语言实例026

大家好,我是一童,今天分享用链表实现猜数字小游戏和经典割白菜;本来这是算法中的案例,我用链表实现是为练习链表的使用,有兴趣的读者可用数组等方法实现,这里就不说了;
这两个程序都如出一辙,只是指针p1在指向结点的起始位置不同,大致过程都是构造结构体,然后一个个申请结点并赋值,形成环形链表后,最后求得所需要的结果;

  1. 猜数字
#include <stdio.h>//链表报数游戏
#include <stdlib.h>
struct ele
{
	int num;
	struct ele *next;
};
void main()
{
	int n,m,i;
	struct ele *head,*p1,*p2;
	printf("请输入数字 n= ");
	scanf("%d",&n);
	printf("请输入间隔位数 m = ");
	scanf("%d",&m);
	head=p1=(struct ele*)malloc(sizeof(struct ele));//申请结点
	head->num=1;
	for(i=2;i<=n;i++)
	{
		p1->next=(struct  ele*)malloc(sizeof(struct ele));
		p1=p1->next;
		p1->num=i;
	}
	p1->next=head;//形成环
	while(n)
	{
		for(i=1;i<m;i++)
		    p1=p1->next;
		p2=p1->next;
		p1->next=p2->next;
		printf("%d",p1->num);
		free(p2);
		n--;
	}
}
  1. 割白菜
#include <stdio.h>//割白菜游戏,院子周围种了n颗白菜,从第一颗开始每隔两颗割一颗,求序列
#include <stdlib.h>
struct Cabbage//结构体存储白菜编号
{
	int num;
	struct Cabbage*next;
};
void main()
{
	struct Cabbage*head,*p1,*p2;
	int i,n;
	printf("n= ");
	scanf("%d",&n);
	head=p1=(struct Cabbage*)malloc(sizeof(struct Cabbage));//设计链表
	head->num=1;
	for(i=2;i<=n;i++)
	{
		p1->next=(struct Cabbage*)malloc(sizeof(struct Cabbage));
		p1=p1->next;
		p1->num=i;
	}
	p1->next=head;//形成环
	p1=p1->next;
	while(n)//直到割完
	{
	for(i=0;i<2;i++)//每隔两颗
		p1=p1->next;
	p2=p1->next;
	printf("  %d",p2->num);
	p1->next=p2->next;
	free(p2);
	n--;
	}
	printf("\n");
}

若有疑问,欢迎留言!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值