一、数据结构算法
数组:大家都知道数组是顺序存储的,虽然存储很方便,但是插入和删除很不方便,插入的时候要插入一个位置,该位置后面的都要一次向后面移动,删除也是一样,删除一个,后面的位置依次向前移动
链表:对比数组,链表就是一种结构,结构体 有一个数据区和一个后一个节点地址的区
//定义结点类型
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的对应的存放相关内容的位置