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

2020-05-27  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读