数据结构
Allure_07
这个作者很懒,什么都没留下…
展开
-
数据结构C(8)——图的定义和基本术语、图的类型定义、图的存储结构
一、图的定义和基本术语图:G=(V,E) V:顶点(数据元素)的有穷非空集合;E:边的有穷集合无向图:每条边都是无方向的有向图:每条边都是有方向的完全图:任意两个点都有一条边相连稀疏图:有很少边或弧的图稠密图:有较多边或弧的图网:边/弧带权的图邻接:有边/弧相连的两个顶点之间的关系存在(vi,vj),则称vi和vj互为邻接点存在<vi,vj>,则称vi邻接到vj,vj邻接于vi关联(依附):边/弧与顶点之间的关系存在(vi,vj)/原创 2020-07-08 18:32:26 · 704 阅读 · 0 评论 -
数据结构C(7)——树和二叉树的定义、二叉树的性质和存储结构、遍历二叉树和线索二叉树、树的存储结构、树与二叉树的转换、森林与二叉树的转化、树与森林的遍历、哈夫曼树及其应用
一、树和二叉树的定义1、树的定义树形结构(非线性结构):结点之间有分支,具有层次关系树是n(n≥0)个结点的有限集若n=0,称为空树若n>0,则它满足如下两个条件有且仅有一个特定的称为根(Root)的结点其余结点可分为m(m≥0)个互不相交的有限集T1,T2,T3,…,Tm,其中每一个集合本身又是一棵树,并称为根的子树(Sub Tree)2、树的基本术语结点:数据元素以及指向子树的分支根结点:非空树无前驱结点的结点,只有一个结点的度:结点拥有的子树数树的度:树原创 2020-06-09 23:41:01 · 566 阅读 · 0 评论 -
数据结构C(6)——串、数组和广义表的定义、串的类型定义、存储结构及其运算、数组、广义表
一、串的定义串:内容受限的线性表串:(String):零个或多个任意字符组成的有限序列子串:一个串中任意个连续字符组成的子序列(含空串)称为该串的子串真子串:指不包含自身的所有子串主串:包含子串的串相应的称为主串字符位置:字符在序列中的序号为该字符在传中的位置子串位置:子串第一个字符在主串中的位置空格串:由一个或多个空格组成的串,与空串不同串相等:当且仅当两个串的长度相等并且各个对应位置上的字符都相同时,这两个串才是相等的 所有空串都相等原创 2020-06-06 22:38:04 · 492 阅读 · 0 评论 -
数据结构C(5)——栈和队列的定义和特点、栈的定义和特点、队列的定义和特点、栈的表示和操作的实现、链栈的表示和实现、栈与递归、队列的表示和操作的实现
一、栈和队列的定义和特点栈和队列是两种常用的、重要的数据结构栈和队列是限定插入和删除只能在表的“端点”进行的线性表栈和队列是线性表的子集(是插入和删除位置受限的线性表)栈——先进后出、后进先出队列——先进先出二、栈的定义和特点栈(stack)是一个特殊的线性表,是限定仅在一端(通常是表尾)进行插入和删除操作的线性表又称为后进先出的线性表,简称LIFO结构表尾(即an端)称为栈顶Top;表头(即a1端)称为栈底Base插入元素到栈顶(即表尾)的操作,称为入栈从栈顶(即表尾)删原创 2020-06-04 22:21:43 · 6593 阅读 · 0 评论 -
数据结构C(4)——循环链表、双向链表、双向链表的插入、删除
一、循环链表循环链表是一种头尾相接的链表(即:表中最后一个结点的指针域指向头结点,整个链表形成一个环)优点:从表中任一结点出发均可找到表中其他结点注意:由于循环链表中没有NULL指针,故涉及遍历操作时,其终止条件就不再像非循环链表那样判断p或p->next是否为空,而是判断他们是否等于头指针循环条件p!=NULL → p!=Lp->next!=NULL → p-&原创 2020-05-23 11:32:52 · 653 阅读 · 0 评论 -
数据结构C(3)——链式存储、单链表的基本操作
一、链式存储用一组物理位置任意的存储单元来存放线性表的数据元素链表中元素的逻辑次序和物理次序不一定相同单链表由头指针唯一确定,因此单链表可以用头指针的名字来命名结点由两个域组成数据域:存储元素数值数据指针域:存储直接后继结点的存储位置相关术语结点:数据元素的存储映像,由数据域和指针域两部分组成链表:线性表链式存储映像,成为线性表的链式存储结构单链表、双链表、循环链...原创 2020-04-28 10:19:04 · 523 阅读 · 0 评论 -
数据结构C(2)——线性表、逻辑特征、基本操作、顺序表示
1、线性表是具有相同特性的数据元素的一个有限序列(a1,a2,…,ai-1,ai,ai+1,…,an)n=0时称为空表其中数据元素的个数n定义为表的长度将非空的线性表(n>0)记作:(a1,a2,…,an)这里的数据元素ai(1≤i≤n)只是一个抽象的符号,其具体含义在不同的情况下可以不同2、线性表的逻辑特征在非空的线性表,有且仅有一个开始结点a1,它...原创 2020-04-16 11:26:27 · 776 阅读 · 0 评论 -
数据结构C(1)——数据结构的基本概念
数据结构C(1)——数据结构的基本概念数据结构相关概念数据结构包括以下三个方面的内容数据元素之间的逻辑关系,也称为逻辑结构数据元素及其关系在计算机内存中的表示(又称为映像),称为数据的物理结构或数据的存储结构数据的运算和实现,即对数据元素可以施加的操作以及这些操作咋相应的存储结构上的实现逻辑结构描述数据元素之间的逻辑关系与数据的存储无关,独立于计算机是从具体问题抽象出来的数...原创 2020-04-01 14:58:39 · 336 阅读 · 0 评论 -
数据结构(6)——栈 - 顺序栈
数据结构(6)——栈 - 顺序栈后进先出(LTFO),先进后出(FTLO)栈底,栈顶栈的操作:Push、Top、Pop、IsEmpty#include<iostream>#include "MyStack.h"using namespace std;int main(){ MyStack<int> st; st.Push(99); st.Push(...原创 2020-03-15 22:19:59 · 137 阅读 · 0 评论 -
数据结构(5)——快速排序
数据结构(5)——快速排序快速排序:速度最快,运用递归 不断选择一个枢轴进行划分,小于枢轴的放在左边,大于枢轴的放在右边#include <iostream>using namespace std;template<class T>void QuickSort(T*a,const int left,const int rig...原创 2020-03-14 11:40:37 · 188 阅读 · 0 评论 -
数据结构(4)——插入排序
数据结构(4)——插入排序插入排序插入排序:输入一个元素,插入到一个已经排好序的数列中的适当位置,使数列依然有序。思想:把欲插入的数与数组中各数逐个比较, 当找到第一个比插入数大的元素i时,该元素之前即为插入位置。然后从数组最后一个元素开始到该元素为止,逐个后移一个单元。最后把插入数赋予元素a[i]即可。如果被插入数比所有的元素值都小则插入最后位置。#include <iostr...原创 2020-03-13 11:46:51 · 207 阅读 · 0 评论 -
数据结构(3)——递归算法
数据结构(3)——递归算法(阶乘,二分查找,排列组合)递归自己调用自己中间结果暂存代码简洁,易理解占用大量内存eg:计算n的阶乘#include <iostream>using namespace std;//-----递归 n!=n*(n-1)!------long jiecheng(int n){ if(n==0) return 1; else r...原创 2020-03-12 11:32:09 · 218 阅读 · 0 评论 -
数据结构(1)——排序
数据结构(1)——排序冒泡排序从左到右扫描数据,选择最大的数据,放在右边。要点:比较相邻的两个数,如果左边的数大于右边的数就进行交换。交换次数很多。#include <iostream>using namespace std;void BubbleSort(int list[], int n);int main(){ int a[] = { 2,...原创 2020-03-11 10:50:45 · 203 阅读 · 0 评论 -
数据结构(2)——查找
数据结构(2)——查找顺序查找与折半查找(二分查找)没有排序的数据:只能循序查找(速度慢)排序后的数据:二分查找顺序查找#include <iostream>using namespace std;int SequentialSearch(int *a,const int n,const int x);int main(){ int m[]={2,4,6,8,0...原创 2020-03-11 10:51:26 · 125 阅读 · 0 评论