陣列模擬單連結串列

weixin_34279579發表於2018-03-29

struct node{

    int data;

    struct node *next;

};

陣列模擬單連結串列,定義b[15]陣列元素是結構體中的data元素,right[15]是next一個元素指向,在當前元素之前,插入新元素。

void createData(){

    int a[13] = {0};//防止初始化重複元素過濾

    int b[15] = {0};

    int right[15] = {0};

    memset(right,-1,sizeof(right));

    srand((unsigned int)time(NULL));

    int n = 10;

    for (int i = 0; i < n; ++i) {

        int temp = rand()%12+1;

        if (a[temp]) {

            --i;

            continue;

        }

        a[temp] = 1;

        b[i] = temp;

        right[i] = i+1;

        printf("%d ",b[i]);

    }

    right[n-1] = -1;//這個是n-1這個元素為-1標記

    printf("\n");

    b[n] = 3;//這個是插入的元素,可以改成自己輸入的元素

//開始插入元素

    for (int i = 0;i != -1;) {

        if (b[right[i]] > b[n]) {

            right[n] = right[i];//將當前的序號後移到n

            right[i] = n;//在位置插入n

            break;

        }

        i = right[i];

    }

    for (int i = 0;(i != -1)&&(b[i] > 0);i = right[i]) {

        printf("%d ",b[i]);

    }

    printf("\n");

}

相關文章