算法程序员

数组模拟单链表

2018-03-29  本文已影响16人  zl520k

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");

}

上一篇下一篇

猜你喜欢

热点阅读