美文网首页算法程序员
数组模拟单链表

数组模拟单链表

作者: zl520k | 来源:发表于2018-03-29 16:17 被阅读16次

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

    }

    相关文章

      网友评论

        本文标题:数组模拟单链表

        本文链接:https://www.haomeiwen.com/subject/pfamcftx.html