
编程基础:数据结构和算法
计算机基础系列
hinzer
HINZER,坐标北京,我在芯片设计行业,目前做 GPU 固件和驱动开发,对嵌入式 OS 感兴趣。
展开
-
C语言代码注释规范
让C代码变得优雅原创 2022-12-25 10:06:39 · 893 阅读 · 1 评论 -
数据结构和算法 | 两数相加
问题描述给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 ...原创 2019-11-17 22:23:16 · 1008 阅读 · 1 评论 -
数据结构和算法 | 二分查找法
对于已排序的数值序列进行查找,查找过程中每比较一次middle值,将查找区间缩小一半!直到找到数据or区间长度缩小为零。原创 2019-08-16 18:42:24 · 906 阅读 · 1 评论 -
数据结构与算法学习笔记 (14)--排序算法之快速排序
排序(Sort)排序(Sort)是将无序的记录序列(或称文件)调整成有序的序列。排序的目的是方便我们队数据查询记录、修改记录等操作。排序的分类按稳定性可分为稳定排序和非稳定排序,按待排序数据的存储位置又可分为内排序和外排序。截止目前,各种内排序方法可归纳为以下五类:(1)插入排序(2)交换排序(3)选择排序(4)归并排序(5)基数排序。本次介绍的是简单...原创 2018-07-30 21:01:29 · 689 阅读 · 0 评论 -
数据结构与算法学习笔记 (13)--排序算法之shell排序
排序(Sort)排序(Sort)是将无序的记录序列(或称文件)调整成有序的序列。排序的目的是方便我们队数据查询记录、修改记录等操作。 排序的分类按稳定性可分为稳定排序和非稳定排序,按待排序数据的存储位置又可分为内排序和外排序。截止目前,各种内排序方法可归纳为以下五类:(1)插入排序(2)交换排序(3)选择排序(4)归并排序(5)基数排序。本次介绍的是简单常用...原创 2018-07-29 20:35:15 · 720 阅读 · 0 评论 -
数据结构与算法学习笔记 (12)--排序算法之直接插入排序
排序(Sort)排序(Sort)是将无序的记录序列(或称文件)调整成有序的序列。排序的目的是方便我们队数据查询记录、修改记录等操作。排序的分类按稳定性可分为稳定排序和非稳定排序,按待排序数据的存储位置又可分为内排序和外排序。截止目前,各种内排序方法可归纳为以下五类:(1)插入排序(2)交换排序(3)选择排序(4)归并排序(5)基数排序。本次介绍的是简单常用...原创 2018-07-29 20:35:06 · 680 阅读 · 0 评论 -
数据结构与算法学习笔记 (11)--查找
查找查找(或检索)是在给定信息集上寻找特定信息元素的过程。 待查找的数据单位(或数据元素)称为记录,在学生管理系统中,一个学生的全部信息称为一条记录。如果这个学生的某个属性可以作为他的标识属性,称为关键字 key。如果这个key值可以最为学生的唯一标识,那么称为 主key。我们就是通过key值,从一堆数据中来检索我们想要的那条记录。称为查找! 查找的方法不同的应用场合适用不...原创 2018-07-25 21:27:07 · 783 阅读 · 0 评论 -
数据结构与算法学习笔记 (10)--二叉树的创建与遍历
一、背景介绍二叉树结构有根结点-左子树-右子树组成,每个子树又可分成根结点-左子树-右子树......这说明二叉树具有递归性质,利用递归的思想实现二叉树的创建与遍历。 二、递归思想创建/遍历二叉树先左(子树)后右(子树)的顺序创建二叉树void create_btree(btree_pnode *T){ datatype_bt ch; //如果结点不存在,...原创 2018-07-24 21:26:56 · 848 阅读 · 0 评论 -
数据结构与算法学习笔记 (9)--树与二叉树及相关概念
一、树树状图是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 每个节点有零个或多个子节点;没有父节点的节点称为根节点;每一个非根节点有且只有一个父节点;除了根节点外,每个子节点可以分为多个不相交的子树 相关概念度数:一个节点的子树的个数称为该节点的度数,一棵树的度数是...原创 2018-07-23 21:11:40 · 674 阅读 · 0 评论 -
数据结构与算法学习笔记 (8)--链式队列的实现
一、队列的链式存储结构 typedef int datatype ; /*定义链队列中数据元素的数据类型*/ typedef struct node {datatype data ; /*数据域*/ struct node *next ; /*链接指针域*/ } linklist ; /*链表元素类型定义*/ typedef struct {linklist ...原创 2018-07-22 21:29:19 · 698 阅读 · 0 评论 -
数据结构与算法学习笔记 (7)--顺序队列的实现
一、背景介绍队列概念:列是限制在两端进行插入操作和删除操作的线性表,允许进行存入操作的一端称为“队尾”,允许进行删除操作的一端称为“队头”。当线性表中没有元素时,称为“空队”。特点 :先进先出(FIFO)。 二、队列的顺序存储结构typedef int datatype ; /*定义队列中数据元素的数据类型*/#define MAXSIZE 64 /*定义队列的容量...原创 2018-07-22 21:29:05 · 771 阅读 · 0 评论 -
数据结构与算法学习笔记 (6)--链式栈的实现
一、背景栈是限制在一端进行插入操作和删除操作的线性表(俗称堆栈)。允许进行操作的一端称为“栈顶”,另一固定端称为“栈底”,当栈中没有元素时称为“空栈”特点 :后进先出(LIFO)。 链式栈:插入操作和删除操作均在链表头部进行,链表尾部就是栈底,栈顶指针就是头指针。 二、链式栈的数据结构typedef int data_t ; /*定义栈中...原创 2018-07-21 21:23:12 · 714 阅读 · 0 评论 -
数据结构与算法学习笔记 (5)--顺序栈的实现
一、背景栈是限制在一端进行插入操作和删除操作的线性表(俗称堆栈)。允许进行操作的一端称为“栈顶”,另一固定端称为“栈底”,当栈中没有元素时称为“空栈”特点 :后进先出(LIFO)。 顺序栈 :它是顺序表的一种,具有顺序表同样的存储结构,由数组定义,配合用数组下标表示的栈顶指针top(相对指针)完成各种操作。 二、顺序栈的数据结构 typedef...原创 2018-07-18 21:01:43 · 1128 阅读 · 0 评论 -
数据结构与算法学习笔记 (4)--双向循环链表
一、介绍 1.各种链表的区分单向链表:链式的存储结构在逻辑上是连续的每次通过一个指针来指向下一个节点将其链接起来 双向链表:包含两个指针,一个(prior)指向前一个节点,一个(next)指向后一个节点。 单向循环链表:与单向链表的区别就是,单向链表的最后一个节点指针是指向NULL的,单向循环链表最后一个节点的指针是指向头节点head的。 双向循环链表:最后一个节点的next...原创 2018-07-17 20:46:31 · 946 阅读 · 0 评论 -
数据结构与算法学习笔记 (3)--单向链表
使用链表可以让我们动态的进行数据存储于分配,方便的实现数据的增加与删除。链表中每个数据元素由指针域和数据域两个部分组成。其结构就是通过指针`链接`的线性表。由于前后结点(数据元素)之间是单向链接的,所以称单向链表。数据元素组织形式typedef int datatype;typedef struct node{ datatype data; struct node *next;}list...原创 2018-07-12 21:57:36 · 617 阅读 · 0 评论 -
数据结构与算法学习笔记 (2)--顺序表
数据为顺序存储关系构成的表为顺序表,下面所有讲解针对逻辑结构为线性的顺序表。数据元素的表示:#define MAXSIZE 100typedef int data_t;typedef struct { data_t data[MAXSIZE]; int last;}seqlist_t;使用typedef定义这种结构体类型(seqlist_t),seqlist_t表示为顺序表类型结构。...原创 2018-07-12 21:57:25 · 803 阅读 · 0 评论 -
数据结构与算法学习笔记 (1)--基本概念
数据结构 + 算法 = 程序数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。算法(Algorithm) 是解决特定问题的步骤的描述,是解决问题的思想方法。程序是计算机语言的具体实现。一、数据结构1.相关概念数据:信息的载体,能被计算机识别、存储和加工处理。数据元素:数据的基本单位,可由若干个数据项组成,数据项是具有独立含义的最小标识单位。数据类型:...原创 2018-07-12 21:57:19 · 1039 阅读 · 0 评论