【算法学习笔记】07.数据结构基础 链表 初步练习

写这篇文章时离学完列表已经很久了 最近真的是很懒。

数据结构这部分在刘汝佳的白书上的部分太少了,我一点要找个时间好好的看一下程杰的大话。

链表的优点是它强调的是相关元素之间的相对顺序,左和右。其实可以是个环状结构。

用left 和 right两个数组分别记录某个元素相应左右的值,再用link函数进行元素之间的重新排序,抽取和添加。

下面以一个小球移动的题为例子来练习链表。

#include <stdio.h>

int left[10]={0,1,2,3,4},right[10]={2,3,4,5,0};
//为了方便,将下标为1的认为是1号小球的属性
void link(int X,int Y)//link函数是进行连接的
{
	right[X]=Y;
	left[Y]=X; 
}
int main()
{
	char type = 'L';
	int x=2,y=4;//将2移到4的左或者右
	link(left[2],right[2]);//把2从序列中取出 稍后在插入 取出的过程其实就是连接1,3 使 1.r=3 3.l=1 
	if(type=='L')
	{
		//把2插入到3和4中间
		link(left[y],x);//3.r=2;2.l=3	
		link(x,y);//2.r=4 4.l=2
	}else
	{
		//把2插入到4和5之间 
		int t = right[y];//如果不用t来做临时存储变量 则要十分慎重下面两行代码的顺序 因为会相互影响 上面的就是例子
		link(y,x); 
		link(x,t);//此时t仍然是最初的right[y] 
	}  
	//链表的操作里,如果使用link函数 并附加参数时一定要考虑动态效应,否则会导致bug 
	//排除此困扰可以用临时变量的方法来解决 
}


以上就是链表的初步应用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值