zoukankan      html  css  js  c++  java
  • 数组单链表

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

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

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

  • 相关阅读:
    Node Exporter监控指标
    Prometheus组件介绍
    记录阿里云安全组设置遇到的奇葩问题--出口ip
    7.prometheus监控多个MySQL实例
    使用Docker Compose部署SpringCloud项目docker-compose.yml文件示例
    Docker Compose的安装及命令补全
    如何调试 Docker
    Dockerfile 最佳实践
    Docker 命令查询
    Docker常见问题
  • 原文地址:https://www.cnblogs.com/buerr/p/7340662.html
Copyright © 2011-2022 走看看