数据结构
文章平均质量分 50
laola的故事
这个作者很懒,什么都没留下…
展开
-
数据结构之线性表(定长线性表和不定长线性表)
线性表:零个或多个数据元素的有限序列,数学描述:若将线性表记为(a1,……ai-1,ai,ai+1,an),则表中ai+1领先于ai,ai领先于ai+1,称ai-1是ai的直接前驱元素,ai+1是ai的直接后继元素。当i=1,2,……,n-1时,ai有且仅有一个直接后继,当i=2,3,……,n时,ai有且仅有一个直接前驱。线性表元素的个数n(n>=0)定义为线性表的长度,当n=0时,称为空原创 2016-02-27 13:14:40 · 712 阅读 · 0 评论 -
排序算法之选择排序
问题定义问题输入:n个数的一个序列<a1a1a_1,a2a2a_2,……,anana_n> 问题输出:输入序列的一个排列<a′1a1′a_1',a′2a2′a_2',……,a′nan′a_n'> 选择排序的算法过程:首先找出A中的最小元素并将其与A[1]中的元素进行交换。接着,找出A中的次最小元素并将其与A[2]中的元素进行交换。对A中前n-1个元素按该方式继续。...原创 2018-06-21 11:02:15 · 496 阅读 · 0 评论 -
排序算法之插入排序
本篇博客介绍一种对于少量元素的排序方法。整个过程类似用于我们平常打扑克牌。假定桌上有扑克牌若干。我们每次抽一张牌,要求手中的牌时刻都是按照某一顺序(从大到小或者从小到大)的顺序排列。这种过程被称为插入排序。问题定义问题输入:n个数的一个序列<a1a1a_1,a2a2a_2,……,anana_n> 问题输出:输入序列的一个排列<a′1a1′a_1’,a′2a2′a_2...原创 2018-06-21 10:22:21 · 226 阅读 · 0 评论 -
数据结构之树
树的基本概念树形结构是一类重要的非线性结构,其逻辑关系呈现出一对多的关系。树的定义树是n(n>=0)个结点的有限集合T,当n=0(即T为空)时称为空树;当n>0时非空。树满足以下两个条件: 有且仅有一个称为根的结点; 其余结点可分为m(m>=0)个互不相交的子集T1,T2,……Tm,其中每个子集又是一棵树,并成为根的子树。树的相关概念...原创 2018-04-01 10:48:23 · 384 阅读 · 0 评论 -
数据结构之队列
定义在生活中,队列的例子非常多,买票回家过年,凭票排队看电影等。队列的基本模型如下所示: 两种形式:顺序队列在上图中,存在两种访问形式: (1) 当队列中无元素时,对头和队尾均指向对头,当新增一个元素时,队尾往后移动一个位置。当减少一个元素时,对头后移一个位置。最后有可能对头和队尾均指向队尾,这种现象被称为“假溢出”。 (2) 或者减少元素时,对头不动,插入元素时,一原创 2018-01-18 16:26:11 · 342 阅读 · 0 评论 -
队列——顺序存储的循环队列(自定义模板)
队列模板(MyQueue.h)#pragma templatetypename E>class MyQueue{public: MyQueue(int queueCapacity);//InitQueue(&Q) 创建队列 virtual ~MyQueue(); //DestroyQueue(&Q)销毁队列 void ClearQueue();原创 2018-01-18 20:37:31 · 1023 阅读 · 0 评论 -
队列——顺序存储的循环队列(存储元素为自定义类型)
相比存储默认类型的循环队列,首先我们需要自定义存储的类。自定义顾客类(Customer.h)#pragma once#includeusing namespace std;class Customer{public: Customer(string name="", int age=0); void printInfo() const;private:原创 2018-01-18 17:19:38 · 740 阅读 · 0 评论 -
队列——顺序存储的循环队列(存储元素为默认类型)
队列头文件(MyQueue.h)#pragma class MyQueue{public: MyQueue(int queueCapacity);//InitQueue(&Q) 创建队列 virtual ~MyQueue(); //DestroyQueue(&Q)销毁队列 void ClearQueue(); //ClearQueue(&Q)清空队原创 2018-01-18 16:40:26 · 610 阅读 · 0 评论 -
自定义带头结点的单链表类(C++)----------测试(二)
题目:请完成下面这个类的方法代码,请实现带头结点的单链表class Link{public: Link(); //构造函数 ~Link(); //析构函数 void insertHead(int val); //头插法 void insertTail(int val); //尾插法 void deleteNode(int val); //删除链表所有值为v原创 2017-11-15 17:54:30 · 727 阅读 · 0 评论 -
C++实现循环队列
(基础知识后期补充) 操作代码如下:头文件CircleQueue.h#include<iostream>#include<cstring>#pragma once //循环队列class CircleQueue{public: CircleQueue(int size = 20); //构造函数 ~CircleQueue(); //析构函数 Circl原创 2017-10-30 20:47:53 · 6878 阅读 · 0 评论 -
C++实现顺序栈
近期在学习C++ 的过程,由于时间仓促,基本知识未能及时整理(后期补充),为了巩固所学的知识,用C++语言来实现顺序栈。基本代码如下:/*** 题目:实现顺序栈*/#include<iostream>#include<cstring>#include <stdlib.h>#include <time.h> using namespace std;class SqStack{priv原创 2017-10-30 20:43:52 · 1421 阅读 · 0 评论 -
数据结构之链表操作
线性表链式存储结构定义:为了表示每个数据元素ai与其后继数据元素aI+1之间的逻辑关系,对数据元素ai来说,除了存储其本身信息外,还需存储一个指示其直接后继的信息。我们把存储数据元素的域称为数据域,把存储直接后继位置的域称为指针域。指针域中存储的信息称为指针或链。这两部分信息组成数据元素ai的存储影像,称为结点(Node)。n个结点链结成一个链表,即为线性表(a1,a2,……,an)的链式原创 2016-02-28 13:42:25 · 507 阅读 · 0 评论 -
数据结构之串
串:串是由零个货多个字符组成的有限序列,又名字符串。一般记为s="a1a2a3……an"(n>=0),其中,s是串的名称,用双引号括起来的字符序列是串的值。注意双引号不属于串的内容。串中的字符数目n称为串的长度。零个字符的串称为空串。串中最重要的操作当属字串的定位操作(子串的定位操纵通常称为串的模式匹配)首先我们使用朴素的模式匹配算法:算法描述:(这个很好理解,绘个图就很清楚了)(原创 2016-02-27 17:57:33 · 510 阅读 · 0 评论 -
排序算法之归并排序
问题定义问题输入:n个数的一个序列<a1a1a_1,a2a2a_2,……,anana_n> 问题输出:输入序列的一个排列<a′1a1′a_1',a′2a2′a_2',……,a′3a3′a_3'> 问题分析归并排序算法完全遵循分治模式。直观上其操作如下: 分解:分解待排序的n个元素的序列成各具n/2个元素的两个子序列。 解决:使用归并排序递归地排序两个...原创 2018-06-22 21:20:44 · 248 阅读 · 0 评论