模拟链表-----《啊哈!算法》

Posted 敲代码的xiaolang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模拟链表-----《啊哈!算法》相关的知识,希望对你有一定的参考价值。

啊哈磊老师的《啊哈!算法》学习记录。

我们有一组排列好的数据,比如由小到大排列为:2,3,5,8,9,10,18,26,32。我们现在需要往里面插入一个数字6,且保持原来的排序顺序不变,我们就可以用到模拟链表(就可以省去使用指针,更易理解)。


我们往里面插入数据的时候,比如插入一个6.我们先把它放到原数组的尾部,然后通过下图的方法遍历整个序列:

#include<stdio.h>
int main()
{
	int data[101],right[101];
	int i,n,t,len;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		scanf("%d",&data[i]);
	}
	len=n;
	for(i=1;i<=n;i++)
	{
		if(i!=n)
		{
			right[i]=i+1;
		}
		else
		{
			right[i]=0;//用0表示没有下一个元素
		}
	}
	len++;
	scanf("%d",&data[len]);
	t=1;//在链表的头部进行遍历
	while(t!=0)
	{
		if(data[right[t]]>data[len])//如果当前节点右边的数,也就是下一个数大于我们要插入的数字,那么我们就插入到中间
		{
			right[len]=right[t];//新插入的数的下一个节点要与当前节点下一个的编号一样
			 right[t]=len;//当前节点的下一个位置就是要插入的数
			 break; 
		 } 
		 t=right[t];//容易忘记 
	 } 
	 	t=1;
	 	while(t!=0)
	 	{
	 		printf("%d ",data[t]);//输出 
	 		t=right[t];//容易忘记 
		 }
	
	getchar();getchar();
	return 0;
} 

算法打卡~~~

以上是关于模拟链表-----《啊哈!算法》的主要内容,如果未能解决你的问题,请参考以下文章

图灵算法群《啊哈算法》领读

java数据结构与算法:java代码模拟带头节点单向链表的业务

关键城市--图的割点 《啊哈算法》代码详解

排序算法整理(啊哈算法)

数组模拟链表

排序算法-----《啊哈!算法》