重拾算法Day09-模拟链表

模拟链表

使用两个数组来模拟链表。

重拾算法Day09-模拟链表_第1张图片
data

data是用来存储数据的,新来的数据直接插入尾部。
right是用来表示data数组中数据的顺序的。
right[i]=n; 表示data中第i个元素的右边的元素的下标是n;

#include 

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;
}

你可能感兴趣的:(重拾算法Day09-模拟链表)