数据结构(C语言)
布丁吖
这个作者很懒,什么都没留下…
展开
-
顺序表的基本操作
顺序表是一段连续的空间,就相当于数组#include <stdio.h>#include <stdlib.h>#define MAX_SIZE 20#define OK 1#define ERROR -1typedef int Status;typedef int ElemType;定义顺序线性表的结构体typedef struct SQ{ ElemType *Elem_arr原创 2017-10-28 13:21:21 · 330 阅读 · 0 评论 -
C语言结构体数组的直接赋值及数组的长度计算
一般情况下,对结构体类型的变量或者结构体类型的数组的赋值都是先定义一个结构体类型的变量,然后在对其属性进行赋值。例如:typedef struct Pi { int x; int y;} Pc;int main() { int i; Pc pc[2]; pc[0].x = 1; pc[0].y = 2; pc[1].x = 3; ...原创 2018-04-11 21:13:04 · 31322 阅读 · 0 评论 -
最小生成树——Prim算法
最小生成树在实际中具有重要用途:1.设计通信网2.设计图的顶点表示城市,边表示两个城市之间通信线路,边的权值表示建造通讯线路的费用3.n个城市之间最多可以建n(n-1)/2条线路,如何选择其中n-1条,使总造价最低Prim算法的步骤:⑴若从顶点v0出发构造,U={v0},TE={};⑵先找权值最小的边(u,v),其中u∈U且v∈V-U,并且子图不构成环,则U= U∪{v},TE=TE原创 2018-01-06 11:13:44 · 2553 阅读 · 0 评论 -
快速排序
设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。 每一趟快速排序都把数组分成两部分,然后分别对前后两部分,在进行快速排序,这是一个递归的过程,直到子序列个数为1为止。#include <stdio.h>#include <stdlib.h>#define原创 2017-12-24 18:18:33 · 221 阅读 · 0 评论 -
shell排序
希尔排序是一种插入排序算法,Shell排序又称作缩小增量排序。Shell排序的执行时间依赖于增量序列。 希尔排序的基本思想:先取一个小于n的整数d作为第一个增量,把文件的全部记录分成 d个组。所有距离为d的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2 < d重复上述的分组和排序,直至所取的增量 dk = 1 (dk < dk-l < …< d2 < d),即所有记录原创 2017-12-24 17:42:26 · 347 阅读 · 0 评论 -
堆排序
排序有很多种方法,堆排序是其中的一种。它是选择排序的一种。可以利用***数组***的特点快速定位指定索引的元素。 堆有一个很好的性质。第i个位置上的值小于第2*i个位置上和第2*i+1个位置上的值(i<2*i && i<2*i+1),这种堆称为小根堆;第i个位置上的值大于第2*i个位置上和第2*i+1个位置上的值(i<2*i && i<2*i+1),这种堆称为大根堆。而第i个位置正好是第2*i个原创 2017-12-24 16:44:15 · 702 阅读 · 0 评论 -
图的邻接表存储及基本操作
图的存储方式有很多种,这里事宜邻接表存储为例实现的。图的基本操作包括初始化一个空图、插入一节点、插入条边、深度优先遍历、广度优先遍历、销毁图等#include<stdio.h>#include<stdlib.h>#define OK 1#define ERROR -1#define MAX_VEX 10//最大顶点数typedef int InfoType;typedef char Ve原创 2017-12-10 22:54:32 · 18813 阅读 · 19 评论 -
二叉树的基本操作
二叉树的基本操作很烦,一个搞不好脑袋就炸了,二叉树最重要的操作就是遍历,而二叉树的操作都是基于遍历实现的,(比如:求叶子节点的个数、求二叉树的深度、求节点的总个数)而遍历最常用的方法就是递归工欲善其事必先利其器 首先把变量定义好#include #include #define MAX_SIZE 10000#define STACK_SIZE 100#define OK 1#d原创 2017-11-02 15:01:49 · 577 阅读 · 0 评论 -
C语言 循环队列的实现
实现了循环队列的插入、删除、遍历等基本操作原创 2017-10-13 21:22:09 · 1084 阅读 · 0 评论 -
C语言 栈的基本操作 栈的实现
栈的操作的基本实现原创 2017-10-13 17:31:55 · 10516 阅读 · 3 评论 -
栈的应用—计算表达式的值
一个表达式由数字和运算符组成,建立两个栈,一个栈用来存数,另一个栈用来存运算符,再利用栈的基本操作来实现表达式的计算#include <stdio.h>#include <stdlib.h>#define OK 1#define ERROR -1#define MAX_SIZE 30typedef int ElemType;typedef int Status;栈的结构体typedef原创 2017-10-22 09:10:54 · 1631 阅读 · 0 评论 -
线性表的链式存储和实现
链式存储的每个节点包括两个域,其中存储数据元素信息的域称为数据域;存储直接后继存储位置称为指针域。指针域中存储的信息交指针或链。#include <stdio.h>#include <stdlib.h>#define OK 1#define ERROR -1#define MAX_SIZE 20typedef int ElemType;节点的结构体typedef struct LNode原创 2017-10-29 20:36:00 · 750 阅读 · 0 评论 -
线性表的应用——多项式的计算
应用顺序表计算多项式,把多项式存储在顺序表里,顺序表的下标对应多项式的系数 #include <stdio.h>#include <stdlib.h>#define MAX_SIZE 100#define OK 1#define ERROR -1typedef int Status;typedef int Elemtype;多项式的结构体typedef struct polynomia原创 2017-10-21 17:26:15 · 1058 阅读 · 0 评论 -
稀疏矩阵的转置
采用三元组法存储稀疏矩阵#include #include #define OK 1#define ERROR -1#define MAX_SIZE 12500typedef int ElemType;//储存数据的类型 可更改typedef int Status;原创 2017-10-17 15:53:32 · 823 阅读 · 0 评论 -
字符串的基本操作和模式匹配
字符串的一些操作和模式匹配#include #include #define MAX_SIZE 100#define OK 1#define ERROR -1typedef int Status;字符串的结构体typedef struct{ char ch[MAX_SIZE]; int length;}String;原创 2017-10-17 20:03:37 · 702 阅读 · 0 评论 -
字符串的模式匹配--BF算法&KMP算法
BF算法是基于主串指针回溯,重新与子串进行逐字符进行比较,主串为S什么要进行回溯呢,原因在于模式P中存在相同的字符或者说由字符(串)存在重复(模式的部分匹配性质),设想如果模式P中字符各不相同,主串就S的指针就根本不需要回溯;然而,我们可以发现在主串S与模式发生失配时,主串指针进行回溯会影响效率,因为由于模式S本身字符的部分部分匹配性质,回溯之后,主串S与模式T有些部分比较是没有必要的,这就是对BF原创 2018-04-05 13:58:59 · 9345 阅读 · 0 评论