使用链表实现小球移动

这篇博客介绍了一个基于链表实现的小球移动问题,其中小球按编号顺序排列。通过读取A和B指令调整小球位置,A指令将小球X移到Y左侧,B指令将小球X移到Y右侧。示例输入和输出展示了具体操作后的序列变化。代码中定义了链表结构并实现了初始化、左右移动小球的函数,最后在main函数中读取指令并更新链表状态。
摘要由CSDN通过智能技术生成
初始状态下,小球按照序号依次排列,编号为:1,2,3······n;
可以执行两种指令。其中,A X Y表示吧X移到Y左边,B X Y表示把X移到Y右边(指令合法)
程序没有测试大量数据
详细描述在刘汝佳的算法书中的第六章
样例输入:
6    2
A    1   3
B   3    5
样例输出:
2  1  4  5  3  6
代码
<span style="font-size:18px;">#include<iostream>
typedef struct sqlist{
	int data;
	struct sqlist* next;
}sq;
using namespace std;
sq* init(sq* head,int n){
	head=new sq;
	head->next=0;
	sq* q=head;
	int i=1;
	while(n){
		sq* p=new sq;
		p->data=i;
		q->next=p;
		p->next=0;
		q=p;
		n--;
		i++;
	}
	return head;
}
void llink(sq* head,int b,int c){
	sq* p;<span style="color:#33CC00;">/<span style="color:#009900;">/标记b的前一个节点</span></span>
	sq* q=head;<span style&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值