数据结构
追艺_年华
这个作者很懒,什么都没留下…
展开
-
PTA 6-1 循环单链表区间删除(15 分)
本题要求实现带头结点的循环单链表的创建和单链表的区间删除。L是一个带头结点的循环单链表,函数ListCreate_CL用于创建一个循环单链表,函数ListDelete_CL用于删除取值大于min小于max的链表元素。函数接口定义: Status ListCreate_CL(LinkList &CL); void ListDelete_CL(LinkList &CL,El原创 2017-11-07 20:32:09 · 766 阅读 · 0 评论 -
数据结构排序算法代码实现
#include using namespace std;#define MAXN 100000#define maxsize 100typedef int Keytype;typedef struct{ Keytype key; InfoType data;}RedType;typedef struct{ RedType r[maxsize+1]; int原创 2017-12-21 18:04:27 · 1172 阅读 · 0 评论 -
各类排序算法的比较
经过这几天对数据结构中各种排序算法的学习,对各类排序算法有了初步的了解。参考了一位大能整理的排序算法讲解,各类排序算法从算法的实现方法和策略选取上给出了两种分类标准:各类算法的复杂度与稳定性比较如下:内部排序方法分类:复杂度O(n2)的简单排序方法,O(nlogn)的高效排序方法(比较法的理论下界),O(d*(n+rd))的基数排序方法.Ø各排序方法各有优缺转载 2017-11-24 23:34:54 · 346 阅读 · 0 评论 -
简单选择排序及其改进算法
选择排序是一种最为直观的简单排序方法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。算法思路:(1)从待排序序列中,找到关键字最小的元素;(2)如果最小元素不是待排序序列原创 2017-11-22 19:57:31 · 1166 阅读 · 0 评论 -
排序算法-归并排序
归并排序(Merge Sort) 归并排序也是一类高效的基于比较的排序算法,是分治思想的典型应用。它的工作原理是首先将未排序序列分成n份元素个数为1的子序列(个数为1被认为是有序的),然后进行合并,最后子序列数为1即已排序序列。归并排序是时间复杂度为次平方中唯一的稳定的排序算法。归并排序的一般步骤: 1.将原始序列分成n份,每份元素个数为1。 2.反复进行有序序列的合并,原创 2017-12-21 17:48:08 · 226 阅读 · 0 评论 -
数据结构各类排序算法分析
从算法的实现方法和策略选取上给出了两种分类标准:各类排序算法性能及稳定性分析:Ø内部排序方法分类:复杂度O(n2)的简单排序方法,O(nlogn)的高效排序方法(比较法的理论下界),O(d*(n+rd))的基数排序方法.Ø各排序方法各有优缺点,具体选择时考虑稳定性、记录大小(小则简单方法即可)、原始数据是否基本转载 2017-12-21 17:41:11 · 375 阅读 · 0 评论 -
排序算法之快速排序
快速排序原理:1.用最左侧元素作“枢轴”,存入“哨所”2.设low和high指向两端3.high向左移动,一旦遇到小于枢轴的元素,则将其移动到左侧,放入low指向的位置;4.low向右移动,一旦遇到大于枢轴的元素,则将其移动到右侧,放入high指向的位置;high和low从两侧交替向中间移动,直至low=high. 左侧均小于等于枢轴,右侧均大于等于枢轴,将枢轴记录填入重叠位置原创 2017-12-10 18:36:51 · 238 阅读 · 0 评论 -
数据结构算法-插入排序
插入排序算法有两种,一种是直接插入排序,一种是折半插入排序直接插入排序(straight insertion sort):每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从后向前扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。直接插入...原创 2017-11-22 17:24:22 · 1356 阅读 · 0 评论 -
畅通工程之局部最小花费问题(prime算法)
下面讲一个prime算法的实例:某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建快速路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全地区畅通需要的最低成本。输入格式:原创 2017-11-14 20:04:00 · 646 阅读 · 0 评论 -
最小生成树(prime算法)
Prim算法1.概览普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)),且其所有边的权值之和亦为最小。该算法于1930年由捷克数学家沃伊捷赫·亚尔尼克(英语:Vojtěch Jarník)发现;并在1957年由美国计算机科学家罗原创 2017-11-14 19:42:58 · 580 阅读 · 0 评论 -
图的遍历
#include typedef enum {false, true} bool;#define MaxVertexNum 10 /* 最大顶点数设为10 */#define INFINITY 65535 /* ∞设为双字节无符号整数的最大值65535*/typedef int Vertex; /* 用顶点下标表示顶点,为整型 */typedef int WeightT原创 2017-11-14 19:25:14 · 502 阅读 · 0 评论 -
PTA 寻找大富翁(25分)
7-2 寻找大富翁(25 分)2015年胡润研究院的调查显示,截至2014年9月,个人资产在600万元以上高净值人群达290万人。假设给出N个人的个人资产值,请快速找出资产排前M位的大富翁。输入格式:输入首先给出两个正整数N(≤106)和M(≤10),其中N为总人数,M为需要找出的大富翁数;接下来一行给出N个人的个人资产值,以百万元为单位,为不超过长整型范围的整数原创 2017-11-28 18:39:06 · 4027 阅读 · 0 评论 -
ADT - 栈
#include#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -1#define INITLENGTH 100#define原创 2017-11-09 18:09:54 · 190 阅读 · 0 评论 -
ADT- 双向链表
#include #include typedef int ElemType;////////////////////////////////////////////// 定义双链表结点类型typedef struct Node{ ElemType data; struct Node *prior; //指向前驱结点 struct Node原创 2017-11-09 18:07:03 · 4093 阅读 · 0 评论 -
单链表和顺序表的逆置问题
单链表的创建与逆置Status ListCreate_L(LinkList &L,int n){ LNode *rearPtr,*curPtr; //一个尾指针,一个指向新节点的指针 L=(LNode*)malloc(sizeof (LNode)); if(!L)exit(OVERFLOW); L->next=NULL; //先原创 2017-11-08 21:53:30 · 372 阅读 · 0 评论 -
7-1 两个有序链表序列的合并
7-1 两个有序链表序列的合并(20 分)已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的并集新非降序链表S3。输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。输出格式:在一行中输出合并后新的非降序链表,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL原创 2017-11-08 21:48:46 · 395 阅读 · 0 评论 -
顺序表的基本操作
#include#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -1#define LISTINIC原创 2017-11-07 22:01:14 · 208 阅读 · 0 评论 -
PTA 排座位(25 分)
布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位。无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他们是否能被安排同席。输入格式:输入第一行给出3个正整数:N(≤100),即前来参宴的宾客总人数,则这些人从1到N编号;M为已知两两宾客之间的关系数;K为查询的条数。随后M行,每行给出一对宾客之间的关系,格式为:宾客1原创 2017-11-07 20:53:02 · 1117 阅读 · 0 评论 -
ADT-二叉树
#include#include#include//函数状态码定义#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -1#define INFEASIBLE -2#define NULL 0typedef int Status原创 2017-11-14 18:37:42 · 589 阅读 · 0 评论