
数据结构
曹世宏的博客
这个博客主要记录我平常学习的一些网络,编程,与计算机有关的一些资料,笔记以及心得体会等。
记录博客,一是为了系统的整理一个大知识块,梳理结构知识点,加深记忆。同时,也把学过的一些东西记录下来发,方便以后用到的时候随时查询。另一个也是希望能对有需要的人有点帮助。共同交流学习。
字节跳动内推链接:https://job.toutiao.com/s/JFToRSu
字节跳动校招内推码: YYG5KEY
投递链接: https://job.toutiao.com/s/Jy8BSv6
展开
-
线性顺序表
线性表:简介:线性表是最基本、最简单、也是最常用的一种数据结构。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部。比如,循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储),但是把最后一个数据元素的尾指针指向了首位结点)。我们说“线性”和“非线性”,只在逻辑层次上讨论,而不考虑存储层次,所以双向原创 2017-09-16 10:01:23 · 679 阅读 · 0 评论 -
一元多项式的表示及相加
一元多项式的表示及相加设计目的与要求题目与设计要求我们设计的程序为一元多项式的表示及相加,这是使用C++语言写成。我们使用计算机处理的对象之间通常存在着的是一种最简单的线性关系,这类数学模型可称为线性的数据结构。而数据存储结构有两种:顺序存储结构和链式存储结构。线性表是最常用且最简单的一种数据结构。所以我们做的是———–一元多项式的表示及相加,其过程其实是对线性标的操作。实验结...原创 2018-05-15 00:02:43 · 42325 阅读 · 7 评论 -
二叉树的基本操作
二叉树:二叉树是树的特殊一种,具有如下特点:1、每个结点最多有两颗子树,结点的度最大为2。2、左子树和右子树是有顺序的,次序不能颠倒。3、即使某结点只有一个子树,也要区分左右子树。满二叉树:在一棵二叉树中,如果所有分支结点都有左孩子和右孩子结点,并且叶子结点都集中在二叉树的最下层,这样的树叫做满二叉树完全二叉树:若二叉树中最多只有最下面两层的结点的度数可以小于2,并且最...原创 2018-05-15 00:00:19 · 2978 阅读 · 0 评论 -
深度优先遍历和广度优先遍历
深度优先遍历深度优先遍历(Depth-First Traversal)简称DFS。算法思想:首先以一个未被访问过的顶点作为起始顶点,沿当前顶点的边走到未访问过的顶点;当没有未访问过的顶点时,则回到上一个顶点,继续试探别的顶点,直到所有的顶点都被访问过。图:深度优先遍历示例图如上图,采用图的深度优先遍历的话,从0号节点遍历的顺序应该是:0,1,2,3,4.程序源代码...原创 2018-05-14 23:56:15 · 2600 阅读 · 0 评论 -
数组
数组的定义:数组: 由一组名字相同、下标不同的n(n≥1)个相同数据类型的数据元素a0,a1,a2,…,an-1构成的占用一块地址连续的内存单元的有限集合。数组的特点:数组中各元素具有统一的类型;数组元素的下标一般具有固定的上界和下界,即数组一旦被定义,它的维数和维界就不再改变。数组的基本操作比较简单,除了结构的初始化和销毁之外,只有存取元素和修改元素值的操作。有关stdarg.h头文件的使原创 2017-10-23 17:29:25 · 751 阅读 · 0 评论 -
字符串的基本操作
串的定义:字符串或串(String)是由数字、字母、下划线组成的一串字符。一般记为 s=“a1a2···an”(n>=0)。它是编程语言中表示文本的数据类型。在程序设计中,字符串(string)为符号或数值的一个连续序列,如符号串(一串字符)或二进制数字串(一串二进制数字)。通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相原创 2017-10-23 17:29:04 · 3398 阅读 · 2 评论 -
栈的应用举例
数制转换应用:十进制数N和其他d进制数的转换是计算机实现计算的基本问题,其解决方法很多,其中一个简单算法基于下列原理: N = (N div d) * d + N mod d(其中:div为整除运算,mod为求余运算)例如,(2007)10 = (3727)8,其运算过程如下:可以看到上述过程是从低位到高位产生8进制的各个数位,然后从高位到低位进行输出,结果数位的使用具有后出现先使用的特点,因原创 2017-10-23 17:28:08 · 9993 阅读 · 0 评论 -
队列
队列的基本概念:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只原创 2017-10-23 17:26:38 · 565 阅读 · 0 评论 -
顺序栈与链式栈的实现
栈的概念:栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。顺序栈:base.h 这个头文件主要用来存放公用的常量和类型。原创 2017-10-23 17:23:32 · 3609 阅读 · 3 评论 -
线性顺序表
线性表:简介:线性表是最基本、最简单、也是最常用的一种数据结构。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部。比如,循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储),但是把最后一个数据元素的尾指针指向了首位结点)。我们说“线性”和“非线性”,只在逻辑层次上讨论,而不考虑存储层次,所以双向原创 2017-10-23 17:21:35 · 1073 阅读 · 0 评论 -
常见排序算法
冒泡排序冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。冒泡排序算法的运作如下:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作...原创 2018-12-12 22:29:26 · 296 阅读 · 0 评论