模拟链表
使用两个数组来模拟链表。
datadata是用来存储数据的,新来的数据直接插入尾部。
right是用来表示data数组中数据的顺序的。
right[i]=n; 表示data中第i个元素的右边的元素的下标是n;
#include <stdio.h>
int main(int argc, const char * argv[]) {
int data[101], right[101];
int n, t, len;
scanf("%d", &n);
for (int i=1; i<=n; i++) {
scanf("%d", &data[i]);
}
len = n;
for (int i=1; i<=n; i++) {
if (i!=n) {
right[i] = i+1;
}else{
right[i] = 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];
}
return 0;
}
网友评论