乞力马扎罗的雪CYF的博客

与您分享IT技术,实现共同进步。

iOS开发——Block引起循环引用的解决方案

内存问题始终是软件开发中的头等大事,iOS开发中也不例外,在面试中也是必问的问题。今天我们主要来讲讲Block中涉及的循环引用问题。当我们自己一开始写代码的时候,可能会大量在block中使用self,但是当看到别人优秀的代码的时候,发现别人常常不是用self,而使用weakSelf. 为什么呢?本...

2016-03-18 01:04:39

阅读数 9072

评论数 0

Xcode真机调试失败:The identity used to sign the executable is no longer valid

在Xcode中突然好久没有使用真机调试了,今天使用真机的时候,出现如下的警告,并真机运行失败:The identity used to sign the executable is no longer valid.Please verify that your device's clock is ...

2016-03-16 22:56:44

阅读数 4167

评论数 0

C语言实现二叉查找树(BST)的基本操作

我们在上一篇博客中讲解了二叉树,这一次我们来实现二叉树的进阶——二叉查找树(Binary Search Tree),又称二插排序树(Binary Sort Tree)。所以简称为BST。二插查找树的定义如下:1.若左子树不为空,则左子树上所有节点的值均小于它的根节点的值;2.若右子树不为空,则右子...

2016-03-16 00:23:08

阅读数 9984

评论数 2

C语言实现二叉树的基本操作

我在前面的博客中讲解了链表、栈和队列,这些数据结构其实都是线性表,并且给出了详细的实现。从今天开始,我们将要来学习树,树作为一种数据结构我们经常会用到,作为起步和基础,我们先来实现二叉树,也就是每个节点有不超过2个子节点的树。对于树的操作,最基本的创建、遍历、求树高、节点数等。代码上传至 http...

2016-03-11 21:45:03

阅读数 22298

评论数 4

C语言使用非循环双向链表实现队列

在前面两篇博客中,我分别使用了静态数组和动态数组来模拟循环队列。但是线性表中和队列最神似的莫过于链表了。我在前面也使用了大量的篇幅来讲述了链表的各种操作。今天我们使用一种比较特殊的链表——非循环双向链表来实现队列。首先这里的说明的是构建的是普通的队列,而不是循环队列。当我们使用数组的时候创建循环队...

2016-03-09 23:17:21

阅读数 4300

评论数 0

C语言实现使用动态数组实现循环队列

我在上一篇博客《C语言实现使用静态数组实现循环队列》中实现了使用静态数组来模拟队列的操作。由于数组的大小已经被指定,无法动态的扩展。所以在这篇博客中,我换成动态数组来实现。动态数组可以不断开辟内存空间,只是会在数组的初始化时有所不同,其他对数组的操作都是一样的。代码上传至 https://gith...

2016-03-07 09:18:34

阅读数 5492

评论数 3

C语言实现使用静态数组实现循环队列

队列是一种先进先出的的数据结构,我们同样可以使用数组、链表等来实现。我们可以在队列的尾部进行插入元素,在队列的头部取出元素。普通的队列由于空间利用率不高,所以我们一般都用循环队列。循环队列中最重要的的两个操作就是判断是否为空和是否已满。当head==tail时,表示队列为空。当(tail+1)%M...

2016-03-06 22:39:15

阅读数 8576

评论数 2

C语言实现使用带头结点的单链表来构造栈结构

我在前面两篇博客中分别使用了静态数组、动态数组两种方式来构造栈,实现起来很方便,但总觉得灵活性还不够,因为无论怎样,我们都是要指定数组的长度。这篇博客中我们将会使用带头结点的单链表来模拟栈。为什么选用单链表呢?因为对于栈来说,弹出、压入等操作都是对栈顶来操作的。而单链表对第一个节点的操作是最为方便...

2016-03-06 17:26:30

阅读数 4542

评论数 0

C语言实现使用动态数组来构造栈结构

我在面前一篇博客《C语言实现使用静态数组来构造栈结构》中使用了静态数组来模拟栈的操作。静态数组的大小是在代码中写死的,是存储在用户栈上面的,使用起来不灵活。在这篇博客中我会使用动态数组来构造,此时使用的内存是动态申请的,只是在数组的创建和释放上面有差别,其他的使用都一样。注意:动态申请的内存需要我...

2016-03-06 15:10:07

阅读数 4358

评论数 0

C语言实现使用静态数组来构造栈结构

在数据结构中,栈是一种很重要的存在。这是一种先进后出的结构,就像一个“死胡同”一样。今天我们先用最简单的方式静态数组来模拟栈。代码上传至 https://github.com/chenyufeng1991/Stack_StaticArray 。(1)声明栈的大小,数组,和一个栈顶指针。栈顶指针可以...

2016-03-06 11:34:58

阅读数 4327

评论数 0

经典算法学习——非循环双向链表实现冒泡排序(带头结点尾结点)

我在之前的博客中分别对三种不同的链表进行了冒泡排序,区分的类型有单链表和双向链表,有带头结点的和不带头结点的。其实实现的整体思路是一样的,分别以(n-1)次遍历链表,比较前后两个节点的大小并判断是否交换。为了学习的完整性,在这篇博客中我们将会来实现对带头结点尾结点的双向非循环链表进行冒泡排序。代码...

2016-03-04 23:05:19

阅读数 3916

评论数 0

C语言实现双向非循环链表(带头结点尾结点)的节点插入

对于双向链表,个人推荐使用带头结点尾结点的方式来处理会比较方便。我在《C语言实现双向非循环链表(不带头结点)的节点插入》中详细实现了在不带头结点的情况下的插入。这次我们将会来在使用头结点尾结点的情况下在任意的位置插入元素。代码上传至 https://github.com/chenyufeng199...

2016-03-04 16:18:08

阅读数 2509

评论数 0

C语言实现非循环双链表节点的删除(带头结点尾结点)

我在之前一篇博客《C语言实现非循环双链表节点的删除(不带头结点)》中详细讲解了不含头尾节点的双链表中删除一个节点,处理过程还是稍显麻烦。自从我们学习使用头尾节点来处理双链表后,删除过程就非常方便。代码上传至 https://github.com/chenyufeng1991/DeleteNodeD...

2016-03-04 13:03:01

阅读数 2764

评论数 0

C实现头插法和尾插法来构建双向非循环链表(带头结点尾结点)

双向链表中如果有了头结点和尾结点,对于头插法和尾插法就显得非常方便。这样在尾部插入一个元素也就不用去遍历链表了。个人建议使用这种链表来处理问题。代码上传至  https://github.com/chenyufeng1991/HeadInsertAndTailInsert_DoubleList_H...

2016-03-04 10:49:43

阅读数 4465

评论数 1

C语言实现双向非循环链表(带头结点尾结点)的基本操作

我在之前一篇博客中《C语言实现双向非循环链表(不带头结点)的基本操作》中详细实现了不带头尾节点的双向非循环链表的很多操作。其实同单链表一样,不带头结点的链表很多操作都是比较麻烦的,常常需要对第一个节点做额外的判断,提高了出错的成本。今天我们要来实现带头结点尾结点的双向非循环链表的操作,虽然额外维护...

2016-03-04 09:46:16

阅读数 3155

评论数 0

经典算法学习——非循环双向链表实现冒泡排序(不带头结点)

我在前面两篇博客《经典算法学习——单链表(不带头结点)实现冒泡排序》《经典算法学习——单链表实现冒泡排序(带头结点)》中详细描述了分别使用带头结点和不带头结点的单链表实现了冒泡排序,让我们对单链表和冒泡排序有了理性的认识。今天我们将会来使用不带头结点的非循环双向链表来实现冒泡排序,在处理过程中,这...

2016-03-03 19:37:30

阅读数 3354

评论数 0

C语言实现非循环双链表节点的删除(不带头结点)

不带头结点的非循环双链表在删除节点的时候比价麻烦,因为同时要维护prior和next两个指针。在处理第一个节点和最后一个节点的时候都要分别考虑,同时也需要考虑节点数量为1的情况。删除情况分为下面两类:(1)删除pos位置的节点;(2)判断x是否在链表中,若存在则删除;代码上传至 https://g...

2016-03-03 17:02:46

阅读数 2604

评论数 0

C实现头插法和尾插法来构建非循环双链表(不带头结点)

在实际使用中,双链表比单链表方便很多,也更为灵活。对于不带头结点的非循环双链表的基本操作,我在《C语言实现双向非循环链表(不带头结点)的基本操作》这篇文章中有详细的实现。今天我们就要用两种不同的方式头插法和尾插法来建立双链表。代码上传至  https://github.com/chenyufeng...

2016-03-03 14:01:01

阅读数 3006

评论数 0

经典算法学习——单链表实现冒泡排序(带头结点)

我在之前一篇博客中《经典算法学习——单链表(不带头结点)实现冒泡排序》实现了对不带头结点的单链表进行冒泡排序,打破了我们常常使用数组来进行冒泡的惯例。然后带头结点的链表更为常用。该篇博客我们就要实现对带头结点的单链表进行冒泡排序。需要注意是否带头结点对处理第一个节点非常重要。代码上传至:https...

2016-03-01 21:12:26

阅读数 13340

评论数 2

C语言实现单链表的逆序打印(带头结点)

我在之前一篇博客《C语言实现单链表(不带头结点)的逆序打印》中详细实现了对一个不带头节点的链表的逆序打印,整体思路也是非常的简单,也就是依次遍历原链表,然后把取出的节点用头插法建立一个新的链表,新链表就是原链表的逆序。这篇博客我会来实现使用带头结点的链表实现逆序,思路同上述是一样的。代码上传至  ...

2016-03-01 20:07:18

阅读数 4522

评论数 1

提示
确定要删除当前文章?
取消 删除