美文网首页
2020-05-25 数据结构算法,swift第三个

2020-05-25 数据结构算法,swift第三个

作者: 一颗小小尘埃 | 来源:发表于2020-05-27 10:04 被阅读0次

    一、数据结构算法

    数组:大家都知道数组是顺序存储的,虽然存储很方便,但是插入和删除很不方便,插入的时候要插入一个位置,该位置后面的都要一次向后面移动,删除也是一样,删除一个,后面的位置依次向前移动

    链表:对比数组,链表就是一种结构,结构体 有一个数据区和一个后一个节点地址的区
    //定义结点类型
    typedef struct Node {
    int data; //数据类型,你可以把int型的data换成任意数据类型,包括结构体struct等复合类型
    struct Node next; //单链表的指针域
    } Node,
    LinkedList;
    (1)单链表

    (2)双向链表

    (3)循环链表

    二、swift 数组怎么来的

    1.字符串的探索
    var str1 = "0123456789"
    字符串长度 <= 0xF(15),字符串内容直接存放在str1变量的内存中

    var str2 = "0123456789ABCDEF"
    字符串长度 > 0xF(15),字符串内容存放在__TEXT.cstring中(常量区)
    字符串的地址值信息存放在str2变量的后8个字节中

    str1.append("ABCDE")
    由于字符串长度 <= 0xF,所以字符串内容依然存放在str1变量的内存中

    str1.append("F")
    开辟堆空间
    可能你会疑问这里为什么是开辟堆空间?
    拼接之前str1是0123456789ABCDE,这时候是字符串15字节+1字节(存放长度),16个字节已经满了,所以无法拼接。
    那么放常量区呢?更不可以,因为常量区的内容不可以改,所以只能开辟堆空间。

    str2.append("G")
    开辟堆空间

    2.数组的探索
    这是从网上摘抄的,是根据汇编得出的Array的对应的存放相关内容的位置


    image.png

    相关文章

      网友评论

          本文标题:2020-05-25 数据结构算法,swift第三个

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