![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Data Structure C/C++
坚持学习的你
还在学习中...
展开
-
7.内部排序
排序,将无序序列有序化;排序分内部排序和外部排序,区别于排序是否在内存中;排序的稳定性:取决于是否会改变原有顺序的相同元素的前后关系;注:稳定性与算法的优劣无关;内部排序总结:内部排序1.插入排序(时间O(n^2))1)直接插入排序//L[1-n]上排序;void InsertSort(Elem A[],int n){ for(int i=2;i<=n;i++){...原创 2019-10-24 15:23:19 · 361 阅读 · 0 评论 -
不开辟内存空间逆置链表
在链表的逆置问题中要解决的问题:1.第一个结点的指针域要置NULL;2.中间结点的指针域要向前一个结点;3.头节点要指向链表的尾端;4.要求不开辟内存空间主要思想:1.判断该链表是否为空或只有一个结点,若是则无需逆置2.创建个结点指针或引用分别指向第i个结点, 创建个结点指针或引用指向第i+1个结点,i>=1; 这两个结点实现next的逆置。temp指针保存第i...原创 2019-03-29 21:03:20 · 448 阅读 · 0 评论 -
C语言实现HashTable
1.HashTable 散列表:可根据关键字直接访问的数据结构。关键字与存储地址存在映射关系。(以存储空间换查找时间,空间换时间数据结构)2.关键字与存储地址的映射关系 通过散列函数将关键字映射指定地址。 设计散列函数: 1.直接定址:hash(key) = a*key+b 2.除留余数法:hash(key) = key%...原创 2019-04-12 20:13:44 · 1560 阅读 · 0 评论 -
C实现图的邻接矩阵存储
有向赋权图的实现#include <iostream>#include <stdio.h>#include <malloc.h>#define Matrix inttypedef enum {OK=1,ERROR=0,OverFlow=-2} Status;typedef enum { True = 1, False = 0 } Bool;/*...原创 2019-04-22 19:10:17 · 549 阅读 · 0 评论 -
C实现图的邻接链表存储
实现代码:#include <stdio.h>#include <malloc.h>typedef enum { OK = 1,ERROR = 0 }Status;#define elem chartypedef struct _node { elem value; int weight; _node *next;}Node,*link;typede...原创 2019-04-29 11:20:48 · 662 阅读 · 0 评论 -
2.线性表
问题:一元多项式及其运算,主要运算有:加减乘等…一元多项式前n项和Sn:∑n=0nanXn,与幂级数∑n=0∞anXn不同,幂级数为limn→+∞∑n=0nanXn一元多项式前n项和S_n:\sum_{n=0}^{n}a_nX^n,与幂级数\sum_{n=0}^{\infty}a_nX^n不同,幂级数为\lim_{n\rightarrow+\infty}\sum_{n=0}^{n}a_nX^...原创 2019-09-09 20:34:05 · 129 阅读 · 0 评论 -
4.1~4.3树和二叉树
4.1什么是树&二叉树该树的每个结点至多只有两颗子树特殊的二叉树1.满二叉树2.完全二叉树注:判断二叉树是否为完全二叉树https://blog.csdn.net/lin1094201572/article/details/860831064.2二叉树的存储1.顺序存储结构2.链式存储机构4.3.1二叉树的遍历根节点的访问顺序是先还是中还是后决定先,中,后序访问...原创 2019-09-09 20:56:45 · 154 阅读 · 0 评论 -
5.4图的应用
图的应用1.最小生成树(研究问题:N个村庄修路连通,怎样花销最小让N个村庄连通)一个连通图的生成树是该图的极小连通子图,通常为带权无向图包含所有顶点,尽量少的边。删除一条边则变为非连通图,增加一条边则会产生回路。特点:1.最小生成树不唯一,但该无向连通图中无相同权值边则最小生成树唯一;2.最小生成树的权值之和唯一,即代价唯一;3.该树顶点数为该连通图结点个数n,所有该生成树边为n...原创 2019-09-17 23:06:06 · 385 阅读 · 0 评论 -
4.5二叉树的应用之二叉排序树、二叉平衡树、哈夫曼树
1.二叉排序树(BST)二叉排序树是一个递归的数据结构;对二叉树的中序遍历结果为顺序小到大序列;二叉排序树的目的不是为了排序,而是为了提高查找(有序)、和删除关键字(树型结构)的速度;特点:左子树<根节点<右子树1.构造一颗二叉排序树bool create_BST(BiTree &T,Elem *elem_list,int n){//不同顺序插入,则树可能不同; ...原创 2019-09-26 14:21:16 · 333 阅读 · 0 评论 -
6.5查找之B树、B+树
4.B树、B+树(B树需知概念和基本操作建立、插入、删除;B+只需了解概念;)1.B树的基本操作B树,多路平衡查找树,m阶B树,指所有结点至多有m棵子树,即每个结点最多有三个分支(至多还有m-1个结点,例:2个关键字有三个缝隙则有三个分支);m阶B树特性:1)每个结点至多有m棵子树,每个结点内至多有m-1个关键字;2)若子树根结点不是终端结点至少含有两颗子树(即结点至少有一个关键...原创 2019-09-30 21:59:09 · 1300 阅读 · 0 评论 -
6.1~4查找之顺序、二分、散列表
6.1顺序查找顺序查找int seq_search(Table T,Elem key){//顺序没有可从前往后,从后往前 for(int i=0;key!=T[i];i++) //顺序结构的Table;可链式结构 return i;}平均查找长度对于n个单元的表,给定key与表中第i个关键字相等,需比较i次;ASL_success=1/n*(1+2+…+n)=n+1/...原创 2019-10-03 10:49:01 · 282 阅读 · 0 评论 -
HuffmanTree和HuffmanCode
HuffmanTree和HuffmanCoding1.HuffmanTreeHuffmanTree又称为最优二叉树,是一类带权路径长度最优的树。假设有n结点,权值为{w1,w2,…,wn},构造一颗有n个叶子结点的二叉树,每个叶子结点带权为wi,则其中带权路径长度WPL最小的二叉树称做最优二叉树(HuffmanTree).1.1 如何构造HuffmanTree赫夫曼算法:根据给...原创 2019-01-20 21:52:10 · 577 阅读 · 0 评论 -
C语言实现队列的顺序存储
队列 #1. 队列不得和栈比较,栈是一种先进后出的线性表,而队列是一种先进先出 (first in first out,缩写 FIFO) 的线性表. #2. 它只允许在表的一端进行插入,而在另一端删除元素。 #3. 在队列中插入的一端为队尾(rear),允许删除的一端为队头(front)。 这里我们实现队列的顺序存储,实现ADT中基本操作Status InitQueue(SqQ...原创 2019-01-08 13:59:17 · 705 阅读 · 0 评论 -
c/c++在数据结构中结构体和参数传递的问题
在用c/c++写数据结构时总会遇到种种问题,c中没有引用,c++继承c后添加的引用,那用上&我们写的还是c吗,我们可以强行理解为c++中的c1.不理解结构体定义2.不理解参数传递3.对指针和引用的理解例:typedef struct SLink{ ElemType data; struct SLink *next; } SLink,*Lin...原创 2018-12-30 21:44:09 · 2348 阅读 · 1 评论 -
栈的应用 10进制的转换
栈的应用 10进制的转换c++实现转为8进制转为16进制原创 2017-11-30 22:47:30 · 435 阅读 · 0 评论 -
线性表的链式存储实现c++
数据结构的链式存储 c++实现基本操作原创 2017-11-30 18:43:18 · 715 阅读 · 0 评论 -
线性表的顺序存储实现c++
数据结构之顺序表 c++实现基本操作原创 2017-11-30 13:50:25 · 589 阅读 · 0 评论 -
栈的顺序存储实现c++
栈的顺序存储c++实现详细如下:#include<stdio.h>using namespace std;class Stack{private: char *stack_Buffer; //空间指针 int stack_size; int stack_top;public: Stack(int size) { ...原创 2017-11-30 21:46:57 · 713 阅读 · 0 评论 -
C++实现图的矩阵存储
图的存储c++ 实现#include<iostream>#include<String.h>using namespace std;class Node{public :char data;bool isvisited;public :Node(char d = 0){data = d;isvisited = false;}};...原创 2017-12-17 17:27:10 · 2453 阅读 · 0 评论 -
线性表的顺序存储实现c语言
*线性结构的特点在数据元素的非空有限集中:1)存在唯一的一个被称做“第一个”的数据元素;2)存在唯一的一个被称做“最后一个”的数据元素;3)除第一个元素外,集合中的每个元素都只有一个前驱;4)除最后一个元素外,集合中的每个元素都只有一个后继。线性表的顺序存储指的是:用一组地址连续的存储单元,依次存储线性表的基本元素。参数使用指针,使用函数传入变量地址即&变量...原创 2017-12-03 22:56:49 · 505 阅读 · 0 评论 -
c实现线性表的链式存储
线性表的链式存储:用任意的存储单元存储线性表的数据元素,用节点存储每个元素的数据,节点中还存储直接后继元素存储位置的域(指针域)。n个结点链接成一个链表,即线性表的链式存储。线性表的基本操作c语言实现#include <stdio.h>#include <malloc.h>typedef int ElemType;typedef struct SL...原创 2017-12-04 14:39:13 · 1242 阅读 · 0 评论 -
栈的链式存储实现c语言
栈的链式存储栈的基本操作c语言实现 #include<stdio.h>#include<malloc.h>using namespace std;typedef int ElemType;typedef struct StackNode{ //结点定义ElemType data;struct StackNode *next;}StackNode...原创 2017-12-06 14:45:41 · 1051 阅读 · 0 评论 -
队列的链式存储实现c语言
队列的链式存储与栈相反,队列是一种先进先出(FIFO)的线性表 FIFO:first in first outc语言实现,bool,引用为c++中先忽略#include<stdio.h>#include<malloc.h>using namespace std;typedef int ElemType;typedef struct QNode{...原创 2017-12-07 18:47:11 · 1436 阅读 · 0 评论 -
c实现链式存储二叉树和二叉树遍历
#1二叉树 (1) 二叉树是一种树型结构 (2)二叉树的特点:每个结点至多只有两棵子树,并且有左右子树之分。可以使用顺序存储或链式存储二叉树#1.1顺序存储二叉树#define MAX_BINARYTREE_SIZE 100 //最多结点typedef TElemType SqBiTree[MAX_BINARYTREE_SIZE]; //SqBiTree[0]...原创 2019-01-04 18:48:31 · 1211 阅读 · 0 评论 -
队列的顺序存储c++实现
队列的基本操作实现c++实现#include<stdio.h>using namespace std;/* typedef struct QNode //c语言队列链式的定义{QElemType data;struct QNode *next;}QNode, *QueuePtr;typedef struct {QueuePtr front;QueuePt...原创 2017-12-01 23:54:27 · 598 阅读 · 0 评论