数据结构基础
LeoHoyle
这个作者很懒,什么都没留下…
展开
-
链表的反转
通过一个数组建立链表,并将其反转。#include<iostream>using namespace std;typedef struct list* pl;typedef struct list l;struct list{ int data; pl next;};pl L=new(l);void makelist(pl L,int a[],int n)//...原创 2018-03-08 23:56:19 · 235 阅读 · 0 评论 -
二叉树的基本操作(含遍历算法非递归实现全收录)
建立一颗二叉树(不要用数组),求二叉树的前序遍历序列,中序遍历序列,后序遍历序列,层序遍历序列,输出叶子数,和树的高度(根节点为第1层),实现二叉树查找程序以下图为例:输出样例:preorder:1 2 4 5 8 9 3 6 71 2 4 5 8 9 3 6 7inorder:4 2 8 5 9 1 6 3 74 2 8 5 9 1 6 3 7postorder:4 8 9 5 2 6 7 3 ...原创 2017-03-03 17:37:06 · 428 阅读 · 0 评论 -
二叉搜索树的基本操作
建立一个非负二叉搜索树(-1表空结点),编写查找函数,层序遍历函数,插入函数,删除函数,查找最大值最小值函数输入该树和要查找的值输出:如果找到,打印出x is found没找到打印出 Not found打印出层序遍历序列删除最大值和最小值删除成功输出x is delete最后再进行一层序遍历例如:输入样例:8 5 3 -1 4 -1 -1 7 -1 -1 15 11 10 -1 -1 12 -1 ...原创 2017-03-04 10:04:17 · 365 阅读 · 0 评论 -
图的BFS,DFS(邻接表)
#include<iostream> #include<cstring>#include<queue>using namespace std;queue<int> q;struct Graph{ int vertex[50]={0}; int edge[50][50]={{0,0}}; int ne,nv;}g;int visi...原创 2017-02-12 17:34:19 · 380 阅读 · 0 评论 -
图的基本操作(无向带权图邻接矩阵)
代码任意输入数字进行测试,注意点从1开始输入#include<iostream>#include<queue>#include<cstdlib>using namespace std;#define inf 99999#define maxsize 10queue<int> seq;int edge[maxsize][maxsiz...原创 2018-03-09 01:43:28 · 8373 阅读 · 3 评论 -
数据结构七种排序算法详解
我们通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序。 排序算法大体可分为两种: 一种是比较排序,主要有:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。 另一种是非比较排序,时间复杂度可以达到O(n),主要有:计数排序,基数排序,桶排序等。代码书写的排序法有: 一、冒泡(Bubble)排序——相邻交换冒泡排序是一种极其简单的排序算法,也是我所学的...原创 2018-03-09 02:26:13 · 3820 阅读 · 0 评论 -
最小生成树kruskal算法(贪心+并查集+堆优化)
kruskal算法克鲁斯卡尔算法的基本思想是以边为主导地位,始终选择当前可用(所选的边不能构成回路)的最小权植边。所以Kruskal算法的第一步是给所有的边按照从小到大的顺序排序。这一步可以直接使用库函数qsort或者sort。接下来从小到大依次考察每一条边(u,v)。具体实现过程如下:<1> 设一个有n个顶点的连通网络为G(V,E),最初先构造一个只有n个顶点,没有边的非连通图T={...原创 2018-03-10 00:27:02 · 2645 阅读 · 1 评论