自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

乞力马扎罗的雪CYF的博客

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

  • 博客(24)
  • 资源 (28)
  • 收藏
  • 关注

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

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

2016-03-18 01:04:39 9942

原创 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 proprtly set,and that your signing certificate is n

2016-03-16 22:56:44 4657

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

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

2016-03-16 00:23:08 12837 3

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

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

2016-03-11 21:45:03 27069 4

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

在前面两篇博客中,我分别使用了静态数组和动态数组来模拟循环队列。但是线性表中和队列最神似的莫过于链表了。我在前面也使用了大量的篇幅来讲述了链表的各种操作。今天我们使用一种比较特殊的链表——非循环双向链表来实现队列。首先这里的说明的是构建的是普通的队列,而不是循环队列。当我们使用数组的时候创建循环队列是为了节省存储空间,而来到链表中时,每一个节点都是动态申请和释放的,不会造成空间的浪费,所以就不需要

2016-03-09 23:17:21 4990

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

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

2016-03-07 09:18:34 6392 3

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

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

2016-03-06 22:39:15 10377 3

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

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

2016-03-06 17:26:30 5777

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

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

2016-03-06 15:10:07 5044

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

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

2016-03-06 11:34:58 4921

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

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

2016-03-04 23:05:19 4684

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

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

2016-03-04 16:18:08 3186

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

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

2016-03-04 13:03:01 3720

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

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

2016-03-04 10:49:43 5629 1

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

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

2016-03-04 09:46:16 4164

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

我在前面两篇博客《经典算法学习——单链表(不带头结点)实现冒泡排序》《经典算法学习——单链表实现冒泡排序(带头结点)》中详细描述了分别使用带头结点和不带头结点的单链表实现了冒泡排序,让我们对单链表和冒泡排序有了理性的认识。今天我们将会来使用不带头结点的非循环双向链表来实现冒泡排序,在处理过程中,这种冒泡比前面两种更为简单高效。代码上传至 https://github.com/chenyufeng1

2016-03-03 19:37:30 4328

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

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

2016-03-03 17:02:46 3281

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

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

2016-03-03 14:01:01 3565

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

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

2016-03-01 21:12:26 18877 3

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

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

2016-03-01 20:07:18 6996 1

原创 C语言实现单链表的节点插入(带头结点)

我在之前一篇博客《C语言实现单链表(不带头结点)节点的插入》中详细实现了如何在一个不带头结点的单链表中进行节点的插入。但是在实际应用中,带头结点的链表更为常用,更为方便。今天我们就要来使用带头结点的单链表进行节点的插入。示例代码上传至 https://github.com/chenyufeng1991/InsertList_HeadNode  。核心代码如下:Node *InsertNode(No

2016-03-01 19:09:56 5030

原创 C语言实现单链表节点的删除(带头结点)

我在之前一篇博客《C语言实现单链表节点的删除(不带头结点)》中详细实现了如何在一个不带头结点的单链表的删除一个节点,在这一篇博客中我改成了带头结点的单链表。代码示例上传至 https://github.com/chenyufeng1991/DeleteLinkedList_HeadNode。删除类型有两种:(1)删除某个位置pos的节点;(2)判断x值是否在链表中,若存在则删除该节点;核心代码如下

2016-03-01 16:09:57 10493

原创 C实现头插法和尾插法来构建单链表(带头结点)

我在之前一篇博客《C实现头插法和尾插法来构建单链表(不带头结点)》中详细实现了如何使用头插法和尾插法来建立一个不带头结点的单链表,但是在实际使用中,我们用的最多的还是带头结点的单链表。今天我们就来实现一下带头结点链表的头插和尾插。代码上传至 https://github.com/chenyufeng1991/HeadInsertAndTailInsert_HeadNode 。核心代码如下://创建

2016-03-01 14:27:06 5222

原创 C语言实现单链表(带头结点)的基本操作

我在之前一篇博客《C语言实现单链表(不带头结点)的基本操作》中具体实现了不带头结点的单链表的11种操作:如计算链表长度、初始化、创建链表、清空链表等等。但是在实际使用中,带头结点的单链表往往比不带头结点的单链表用的更多,使用也更为方便。因为不用单独考虑第一个节点的情况了,第一个节点和其他后续节点的处理全都一样了,简化操作。这篇博客将会来实现带头结点的单链表的11种操作。代码上传至: https:/

2016-03-01 13:40:10 13872 3

计算机专业外语

这是自己整理的计算机专业外语的词汇和缩略词。

2014-06-22

语法分析报告

该程序实现了对源程序的语法分析,进行自顶向下的LL(1)分析。

2014-06-22

软工UML试题

这是软件工程专业2010 2011年的UML考试例题

2014-06-22

西科大09年uml试卷

2009 2010年西科大的UML考试的复习例题 必做

2014-06-22

词法分析报告

这是编译程序的第一步,要进行词法分析程序。这是一份报告。

2014-06-22

编译原理概念整理

这是自己一学期的编译书本概念整理。这就不用去看形式化的书本内容了。

2014-06-22

UML考试简答

UML的复习资源,上面有西科大最近几年的UML考试简答题资料。

2014-06-22

数据挖掘试卷

数据挖掘和数据仓库,各种算法。做本套试卷可以帮你顺利考试。

2014-06-22

软件项目管理试卷

软件项目管理,我们用的书是韩万江的。试卷有很大的价值

2014-06-22

编译原理试题

这是自己整理的编译原理试卷。种类丰富。难度不同。

2014-06-22

uml复习试卷

这是自己收集的UML期末考试试卷,会有不少原题。

2014-06-22

Linux期末试卷

这是自己收集的各个学校的Linux期末试卷,有比较大的参考性。

2014-06-22

UML期末复习

这是软件建模与UML期末复习资料,简化了书本内容。

2014-06-22

编译原理期末复习

这是自己整理的编译原理期末复习资源,可以帮你考得高分。

2014-06-22

期末Linux复习资料整理

这是自己整理的Linux期末复习整理资源 可以帮你顺利考的高分

2014-06-22

ActiveX程序

使用用C++技术开发的ActiveX小程序。

2014-06-03

操作系统。

操作系统复习资料,是我自己整理的。供大家学习。

2014-06-03

java注释模板

这是关于使用java开发工具中要用到的模板,有助于你开发出好的程序。

2014-06-03

俄罗斯方块

这是关于俄罗斯方块的代码。基本实现游戏功能,来给大家共享下。

2014-06-03

课程设计 字符串

这是大一时写的C++代码,共享给大家,是关于C++的总结。

2014-06-03

字符串代码

这是我的课程设计作业,来给大家分享,是关于字符串的操作。

2014-06-03

C++第一章幻灯片

一维非常敬业的老师制作的C++PPT。欢迎大家来下载。

2013-07-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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