如果大家看不懂指针的链表,也可以用模拟链表的数组代替指针。
还是前一个题目
#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;
//初始化数组right
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];
}
getchar();
getchar();
return 0;
}