在链表中插入一个数;
(只能插入一个比最大的小的)
#include<stdio.h>
int main()
{
//right[1]=2说明data[1]后面一个元素是data[2]
//reght[2]=0说明data[2]后面没有元素
int data[100],right[100];
int i,n,t,len;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&data[i]);
}
len=n;
//初始化right
for(i=1;i<=n;i++)
{
if(i!=n)
{
right[i]=i+1;
}
elae
{
right[i]=0;
}
}
//直接在data末尾加数
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];
}
return 0;
}