![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 86
TECH_PRO
Hello,world!
展开
-
(一)数据结构之线性表的简单实现:链表
1、线性表的定义 线性表(Linear List):由同类型的数据元素构成的有序序列的线性结构:表中元素个数称为线性表的长度,线性表没有元素时,称为空表,表起始位置称表头,表结束位置称为表尾。 2、链表的顺序存储的实现 2.1 数据结构表示 利用数组的连续存储空间顺序存放线性表的各元素。首先定义链表的基本数据结构如下所示: /* 定义List的基本结构 */ #define MAXSI原创 2017-09-17 17:42:47 · 707 阅读 · 0 评论 -
(十二)数据结构之快速排序算法实现
1、快速排序方法 采用分而治之的方法:从待排序元素随机找到一个,以它为中间点,将所有比它大的放在一边,所有比它小的放在另一边,然后每一边在执行和上面相同的步骤。选取中间点(pivot)很关键,如果碰到和pivot相同的元素则停下来交换。 如果数据规模较小:小规模数据的快速排序可能还没有简单排序快,所以可以在程序中设定一个cutoff(阈值),大于它用快速排序,小于它则用简单排序方法比如插入排序原创 2017-09-18 10:20:39 · 966 阅读 · 0 评论 -
(十一)数据结构之归并排序算法实现
1、递归归并排序 具体实现如下: /* 递归排序 */ void Merge_sort_r( ElementType A[], int N ) { ElementType *TmpA; TmpA = malloc( N * sizeof( ElementType ) ); if ( TmpA != NULL ) { MSort_r( A, TmpA, 0, N-1 ); f原创 2017-09-18 10:14:23 · 701 阅读 · 0 评论 -
(十)数据结构之希尔排序算法实现
1、希尔排序 希尔排序是对插入排序的一种改进,插入排序的实现可以参考这篇文章http://blog.csdn.net/tech_pro/article/details/78016096。希尔排序具体实现如下: /* 原始希尔排序 */ void Shell_sort( ElementType A[], int N ) { int D, P, i; ElementType Tmp; fo原创 2017-09-18 10:09:36 · 749 阅读 · 0 评论 -
(九)数据结构之简单排序算法实现:冒泡排序、插入排序和选择排序
1、冒泡排序 /* 冒泡排序,按照由小到大顺序进行排序 */ void Bubble_Sort( ElementType A[], int N ) { int P, i; int flag = 0; /* 定义一个flag来判断带排序序列是否有序或局部有序,提高算法效率 */ for ( P=N-1; P>=0; P-- ) { flag = 0; for( i=0; i<P;原创 2017-09-18 10:03:28 · 1168 阅读 · 0 评论 -
(七)数据结构之搜索二叉树的简单实现
1、搜索二叉树的简单定义 二叉搜索树(BST, Binary Search Tree), 也称二叉排序树或者二叉查找树。 定义: a、是一颗二叉树,可以为空,也可以不为空。 b、非空左子树的所有键值小于其根结点的键值 c、非空右子树的所有键值大于其根结点的键值。 d、左、右子树都是二叉搜索树。 2、具体实现 搜索二叉树是特殊的二叉树,所以这里只实现搜索二叉树特殊的操作,基本操作可以原创 2017-09-17 19:00:56 · 505 阅读 · 0 评论 -
(六)数据结构之二叉树的简单实现
1、基本数据结构 /* 二叉树的基本数据结构的定义 */ typedef char ElementType; typedef struct TreeNode *BinTree; typedef BinTree Position; struct TreeNode{ ElementType Data; BinTree Left; BinTree Right; }; 采用链式存储方式来存储二叉原创 2017-09-17 18:45:34 · 567 阅读 · 0 评论 -
(五)数据结构之静态查找的简单实现:顺序查找和二分查找
1、查找的定义 根据某个给定关键字K,从集合R中找出关键字与K相同的记录。查找分为动态查找和静态查找:动态查找,集合中内容是动态变化的;静态查找,集合中内容是固定不变的。本文主要来介绍最基本的静态查找的方法:顺序查找和二分查找。 2、具体的实现 2.1 基本数据结构 /* 定义查找相关数据结构 */ #define TABLE_LENGTH 10 typedef int ElementTy原创 2017-09-17 18:36:49 · 1924 阅读 · 0 评论 -
(四)数据结构之线性表的简单应用:多项式求和
1、基本思路 采用不带头结点的单向链表,按照指数递减的顺序排列各项。 算法思路: a、两个指针P1和P2分别指向这两个多项式第一个结点,不断循环: i、P1->expon == P2->expon : 系数相加,如果结果不为0,则作为多项式对应项系数,同时,P1和P2都分别指向下一项。 ii、P1->expon > P2->expon : 将P1的当前项存入多项式,并让P1指向下一项原创 2017-09-17 18:24:56 · 2260 阅读 · 0 评论 -
(三)数据结构之线性表的简单实现:队列
1、队列的简单定义 队列:具有一定操作约束的线性表;只能在一端插入,在另一端删除;先进先出:First In First Out(FIFO)。 2、队列的顺从存储实现 队列的顺序存储结构通常由一个一维数组和一个记录队列头元素位置的变量front以及一个记录队列尾元素的位置变量rear组成。为了不造成存储空间上的浪费常定义位循环队列。 2.1 基本数据结构 /* 定义队列的基本数据结果 *原创 2017-09-17 18:13:49 · 526 阅读 · 0 评论 -
(二)数据结构之线性表的简单实现:堆栈
1、堆栈的定义 具有一定操作约束的线性表,只在一端(栈顶,Top)做插入、删除操作。堆栈的基本操作主要有两类:a、插入数据:入栈(Push);b、删除数据:出栈(Pop)。 2、栈的顺序存储实现 2.1 栈的基本数据结构 /* 定义堆栈的数据结构 */ #define MaxSize 10 typedef int ElementType; typedef struct _Stack{原创 2017-09-17 18:02:31 · 443 阅读 · 0 评论 -
(八)数据结构之最大堆的简单实现
1、什么是堆? 堆是一种优先队列。特殊的队列,取出元素的顺序是按照元素的优先权(关键字)大小,而不是元素进入队列的先后顺序。 堆的两个特性: a、结构性 用数组表示的完全二叉树 b、有序性 任一结点的关键字是其子树所有结点的最大值(或最小值) 2、最大堆的实现 2.1 基本数据结构 /* 定义最大元素的界限 */ #define MAXDATA 10000 /* 创建基本的数原创 2017-09-18 09:56:24 · 785 阅读 · 0 评论