首页
首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
数据结构与算法
订阅
Whip78215
更多收藏集
微信扫码分享
微信
新浪微博
QQ
8篇文章 · 0订阅
双向链表
节点:单向链表每一个节点有一个next指针指向下一个节点。双向链表的节点在单向链表节点的基础上,增加了一个prev指针,指向改节点前一个节点。 链表:双向链表中除了_first指针指向链表的头节点之外,又增加了一个_last指针指向链表的尾节点。 由于Objective-C循环…
单向循环链表
单向循环链表是在单向链表的基础上,将最后一个节点的next指针指向链表的头节点。但是基于Objective-C内存管理的机制,这样会出现循环引用,所以最后一个节点指向头节点应该用弱引用。 为了便于拿到节点的下一个节点,这里在next的get方法中做了判断,如果next为空再去取…
单向链表
接着上一篇动态数组,这里再来创建通过单向链表实现一个动态数组。首先先来分析下动态数组的缺点,才能够了解到链表的意义。 动态数组添加元素的时候,最坏的情况是插入元素到数组的头部,则需要依次向后挪动所以元素,进行的操作数取决于当前元素的数量,复杂度为O(n),最好的情况是追加到数组…
Objective-C环境下的静态数组实现
就一个原因吧,Objective-C这家伙没有,只能自己搞一个。 创建一个数组对象JKRArray,直接继承自NSObject。 由于数组需要保存对象的指针,而且由于功能限制,内部必须要自己静态数组来存放指针,而Objective-C没有这种功能,我们就只能够通过C++的数组来…
栈和队列
栈是一种受到限制和线性表,只能够在表尾添加元素,并且只能够获取和删除表尾元素。表尾成为栈的栈顶,表头成为栈的栈底。向栈添加一个元素成为进栈、入栈或压栈,取出元素称为出栈或退栈。 完全可以把栈理解成为一个功能受到限制的链表:只能够向链表的尾部追加元素,并且只能够获取和删除链表的尾…
双向循环链表
双向循环链表是单向循环链表的功能扩充,双向循环链表的原理和单向链表很相似:尾节点的next指向链表的头节点。在此基础上,头节点的prev指向尾节点,这样就实现了双向循环链表。同样,为了防止循环引用,尾节点指向头节点要用弱引用。 双向循环链表添加节点和双向链表基本一样,只是多了头…
用Objective-C实现哈希表
首先回顾一下前面实现的数组和链表,无论是动态数组、链表、还是循环链表,而且如果是从其中查询特定值,都不可避免的要遍历依次遍历所有元素依次去做比较才可以。 做为面向对象开发语言的使用者,一定用过类似于Map的对象,通过 key: value 存储一个键值对。Objective-C…
动态数组
Objective-C中的NSMutableArray就是一个动态数组,不用指定数组的长度就可以放心向里边添加元素,不需要考虑溢出的问题。实现动态数据的方式非常多,例如对静态数组进行封装扩容或者链表,甚至多种方式混合使用,根据数据量的大小来动态改变自己的数据结构。这里就使用最简…