模拟链表-----《啊哈!算法》
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;
}
算法打卡~~~
以上是关于模拟链表-----《啊哈!算法》的主要内容,如果未能解决你的问题,请参考以下文章