例题
有一串已经从小到大排好序的数2 3 5 8 9 10 18 26 32现需要往这串数字中插入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;
}
//直接数组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;
}