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

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

  • 相关阅读:
    DI 之 3.4 Bean的作用域(捌)
    DI 之 3.3 更多DI的知识(柒)
    MySQL中基本的多表连接查询教程
    DI 之 3.3 更多DI的知识(陆)
    字符串(string)转json
    如何查看连接mysql的ip地址
    DI 之 3.2 循环依赖 (伍)
    DI 之 3.1 DI的配置使用(肆)
    IoC 之 2.3 IoC的配置使用(叁)
    MySQL for Windows 解压缩版配置安装
  • 原文地址:https://www.cnblogs.com/buerr/p/7340662.html
Copyright © 2011-2022 走看看