美文网首页
数据结构的OC实现

数据结构的OC实现

作者: liboxiang | 来源:发表于2019-02-27 10:10 被阅读0次

https://www.agnosticdev.com/blog-entry/objective-c/objective-c-algorithms-and-data-structures
具体实现示例:https://github.com/quinntaylor/CHDataStructures

数组

栈是一种特殊的线性表,仅能在线性表的一端操作,栈顶允许操作,栈底不允许操作。 栈的特点是:先进后出,或者说是后进先出,从栈顶放入元素的操作叫入栈,取出元素叫出栈。


image.png

队列

队列与栈一样,也是一种线性表,不同的是,队列可以在一端添加元素,在另一端取出元素,也就是:先进先出。从一端放入元素的操作称为入队,取出元素为出队


image.png

链表

链表是物理存储单元上非连续的、非顺序的存储结构,数据元素的逻辑顺序是通过链表的指针地址实现,每个元素包含两个结点,一个是存储元素的数据域 (内存空间),另一个是指向下一个结点地址的指针域。根据指针的指向,链表能形成不同的结构,例如单链表,双向链表,循环链表等。


image.png

链表的优点:
链表是很常用的一种数据结构,不需要初始化容量,可以任意加减元素;
添加或者删除元素时只需要改变前后两个元素结点的指针域指向地址即可,所以添加,删除很快;

缺点:
因为含有大量的指针域,占用空间较大;
查找元素需要遍历链表来查找,非常耗时。

适用场景:
数据量较小,需要频繁增加,删除操作的场景

一般用于社会组织结构、人类家族血缘关系这种数据。

二叉树

每个结点至多只有两棵子树

二叉树的存储
181910594566385.png
  • 顺序存储
    在存储空间中按123...8910的数据存储,假如6不存在,也要留空间,所以如果不是完全二叉树,会造成空间浪费
  • 链式存储


    991470-20161113210259170-2045193465.png
二叉树的遍历

分先序遍历、中序遍历、后序遍历三种,其实就是根据什么时候取根结点定的。先取根结点就是先序;后取根结点就是后序;遍历左子树后取根结点,然后遍历右子树就是中序。

  • 先序遍历
void PreOrderTraverse(BiTree T) {
    if (T != NULL) {
        printf("%d",T->data);  //打印根结点
        PreOrderTraverse(T->lchild);  //遍历左子树
        PreOrderTraverse(T->rchild);  //遍历右子树
    }
}
  • 中序遍历
void InOrderTraverse(BiTree T) {
    if (T != NULL) {
        InOrderTraverse(T->lchild);  //遍历左子树
        printf("%d",T->data);  //打印根结点
        InOrderTraverse(T->rchild);  //遍历右子树
    }
}
  • 后序遍历
void PostOrderTraverse(BiTree T) {
    if (T != NULL) {
        PostOrderTraverse(T->lchild);  //遍历左子树
        PostOrderTraverse(T->rchild);  //遍历右子树
        printf("%d",T->data);  //打印根结点
    }
}

相关文章

  • iOS底层初探

    OC底层实现原理 oc对象以及类的是底层实现 首先,通过数据结构的特性可以猜测类的底层应该是结构体这种数据结构,因...

  • OC 对象的本质

    OC的本质 我们平时写的OC代码的底层都是c/c++代码实现的 OC的面向对象都是基于c/c++的数据结构实现的 ...

  • OC对象

    OC的本质 oc代码,底层是由c/c++实现 Objective-C的面向对象都是基于C\C++的数据结构实现的 ...

  • iOS | 底层原理分析 (一)

    一. OC对象本质 1.1 OC对象数据结构 我们平时编写的Objective-C代码,底层实现其实都是C\C++...

  • 01-OC对象的本质

    OC是通过C/C++的什么数据结构实现我们的OC对象呢 结构体--OC对象的本质就是C/C++的结构体 Class...

  • Objective-C内存结构源码解读

    我们平时编写的OC代码,底层实现其实都是C\C++代码,所以OC的对象和类主要是基于C和C++的数据结构实现的,这...

  • iOS开发 算法_数据结构

    前言:本文主要是对常用的数据结构和算法OC版本实现。 一、数据结构(Structures)1、复杂度。2、动态数组...

  • iOS 面试汇总 - OC语法

    Objective-C的本质 OC代码底层都是C\C++代码 OC的面向对象都是基于C\C++的数据结构实现的 O...

  • 数据结构的OC实现

    https://www.agnosticdev.com/blog-entry/objective-c/object...

  • OC对象的本质

    一、OC对象的底层实现 Objective-C 底层是由C/C++的数据结构实现的。一个NSObject类对应C中...

网友评论

      本文标题:数据结构的OC实现

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