• 数组单链表


    在那个久远的没有指针的年代,,据说伟大的先人们都是用数组来实现单链表

    #define MAXSIZE 20
    typedef struct
    {
        int cursor;
        int data;
    }Component;
    
    
    void cursor_init(Component list[], int *len)
    {
        int i =  0;
        for(i=0; i<MAXSIZE; i++)
        {
            list[i].cursor = i + 1;
        }
        list[MAXSIZE-1].cursor = 0;
        *len = 0;
    }
    
    void cursor_print1(Component list[])
    {
        int start = list[MAXSIZE-1].cursor;
        int i = start;
        if(start == 0) {
            printf("kong -----
    ");
            return;
        }
        while(i)
        {
            printf("%d ", list[i].data);
            i = list[i].cursor;
        }
        printf("
    ");
    }
    
    void cursor_print2(Component list[], int *len)
    {
        int start = list[MAXSIZE-1].cursor;
        int i = 0;
        for(i=0;i<*len;i++) {
            printf("%d ", list[start].data);
            start = list[start].cursor;
        }
        printf("
    ");
     } 
    
    void cursor_insert(Component list[], int position, int data, int *len)
    {
        int i = 0;
        int start = list[MAXSIZE-1].cursor;
        int j = start;
        int p;
        if(position<1 || position > *len+1) {
            printf("no----
    ");
            return;
        }
        
        p = list[0].cursor;
        list[p].data = data;
        list[0].cursor = list[p].cursor;
        
        if(start == 0) {
            list[MAXSIZE-1].cursor = p;
            list[p].cursor = 0;
        }else if( position==1 ){
            list[MAXSIZE-1].cursor = p;
            list[p].cursor = start;
        }else {
            for(i=1; i<position-1;i++)
            {
                j = list[j].cursor;
            }
            
            list[p].cursor = list[j].cursor;
            list[j].cursor = p;
        }
        
        *len += 1;
        
    }
    
    int main()
    {
        Component list[MAXSIZE];
        int len;
        cursor_init(list, &len);
        
        cursor_insert(list, 1, 1, &len);
        cursor_insert(list, 2, 2, &len);
        cursor_insert(list, 3, 3, &len);
        cursor_insert(list, 4, 4, &len);
        cursor_insert(list, 5, 5, &len);
        cursor_insert(list, 3, 3, &len);
        cursor_insert(list, 4, 4, &len);
        cursor_insert(list, 5, 5, &len);
        cursor_insert(list, 3, 7, &len);
        cursor_insert(list, 4, 8, &len);
        cursor_insert(list, 1, 9, &len);
        
        cursor_print1(list);
        cursor_print2(list, &len);
        return 0;
    }

    删除跟插入类似,就不写了。。。。

  • 相关阅读:
    Android开发(十五)-Service和BroadcastReceiver
    Android开发(十四)-ContentProvider数据共享
    Android开发(十三)-图形与图像处理
    Android开发(十二)-Android应用资源
    Android开发(十一)-Intent和IntentFilter通信
    Android开发(十)-Activity和Fragment
    Android开发(九)-事件机制
    模拟面试
    二叉堆
    面试
  • 原文地址:https://www.cnblogs.com/buerr/p/7340662.html
Copyright © 2020-2023  润新知