数据结构-C实现
东方索
值得
展开
-
数据结构之二叉树
二叉树:二叉树是每个节点最多有两个子树的树结构二叉树分两种:顺序结构的二叉树和链式存储的二叉树但前者容易造成空间的浪费,所以适合用于完全二叉树 而二叉树链表就不会出现这样的问题一、二叉树链表结构: lchild-data-rchild 一个数据域和两个指针域,分别存放左孩子和右孩子的指针 二叉树链表C代码实现:#include "string.h"#include "stdio.h"原创 2016-09-13 15:20:34 · 650 阅读 · 0 评论 -
数据结构之查找算法
这里介绍四种查找算法:顺序查找:有哨兵查找和无哨兵查找 时间复杂度O(n) 折半查找 时间复杂度O(log(n))斐波那契查找:它是利用了黄金分割原理来实现的 时间复杂度O(log(n)) 插值查找法:这种方法,是利用公式 mid=low+ (high-low)*(key-a[low])/(a[high]-a[low]);原创 2016-09-13 15:33:22 · 566 阅读 · 0 评论 -
数据结构之散列表
散列表:哈希表,存储位置 = f(关键字) ,这种对应关系的函数成为哈希函数Hash 建立一张表,方便查找,每一个key对应表中的一个位置 跟传统的查找不同的是,散列表都有具体的位置,查找时的算法时间复杂度为O(1),不需要依靠规律查找。#include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.原创 2016-09-13 15:41:38 · 349 阅读 · 0 评论 -
数据结构之顺序存储结构线性表
顺序存储结构:元素按顺序连续存储。一般它的定义存储格式为://定义数据格式typedef struct { ElemType data[MAXSIZE]; //数组存储元素 int length; //线性表的长度}SqList; 在读取顺序表的元素,不管哪个位置它的算法时间复杂度都为O(1),当插入或删除一个元素的时候,它的时间复杂度为O(n).以下原创 2016-09-02 20:53:10 · 405 阅读 · 0 评论 -
数据结构之单链表
链表:存储结构的一种,包含两个部分,数据域和指针域,相对于顺序存储结构来说,插入和删除的算法时间复杂度只为O(1).定义://定义typedef struct Node *LinkList; //linkList,指针指向每一个元素typedef struct Node{ //每个元素的构成 ElemType data; //数据域原创 2016-09-02 21:02:36 · 608 阅读 · 0 评论 -
数据结构之队列
队列:是只允许在一端进行插入操作,另一端进行删除操作的线性表. 先进先出,有队头front和队尾rear。一、循环队列:首尾相接的队列成为循环队列。循环队列为空的条件:Q.front==Q.real 循环队列为满的条件: (Q->rear+1)%MAXSIZE == Q->front 循环队列的长度: (Q.real-Q.front+MAXSIZE)%MAXSIZE #include "std原创 2016-09-08 21:24:56 · 478 阅读 · 0 评论 -
数据结构之栈
栈:一种数据结构,先进后出,元素一次入栈可以有多种出栈方式。栈的特有就是栈顶,和栈底,各种数据操作都在栈顶进行,所以,栈顶一般会有top用于表示栈顶指针,当栈为空时,top=-1。一 、顺序栈:最普通的栈#include <stdio.h>#include <stdlib.h>#include "math.h" #include "time.h"#define OK 1#define ERR原创 2016-09-08 21:09:29 · 382 阅读 · 0 评论