数据结构与算法
计算机专业《数据结构》课程作业
还有一些使用过的算法
假面兔子
这个作者很懒,什么都没留下…
展开
-
【搜索算法】深度优先搜索遍历
深度优先,顾名思义是向纵深处遍历树或图,如下图所示:遍历顺序为1–3–6–9–13–12–5–2–4–8–11–7–10每次都看向树的右子树,当右子树全部看完后再回到树根向左看(回溯),因此采用堆栈的数据结构。深度优先搜索遍历图基本思想:深度优先搜索每次首先扩展最晚生成的节点分支,即搜索路线向“纵向”深入。每次搜索到分支的最深处时再使用回溯访问其它的分支。因此,深度优先搜索使用了栈的数据结构。算法描述:把初始节点放入open表。把open表的栈顶取出放入closed表。如果该节点可扩.原创 2022-05-31 08:28:33 · 5554 阅读 · 1 评论 -
【数据结构】查找算法
有序表的折半查找/有序表的折半查找/输入:第一行包括两个数,查找范围的大小n,以及要查找元素的个数m第二行是n个元素,表示查找范围内的元素第三行是m个元素,表示要查找的元素输出:能找到则输出位置,不能找到则输出-1#include<stdio.h>#include<malloc.h>int zheban(int a[],int n,int m){ int low=0; int high=n-1; int mid; while(low<=high) {原创 2022-05-15 17:23:48 · 571 阅读 · 0 评论 -
【数据结构】排序算法——九大排序算法
reference:排序算法参考《数据结构》严蔚敏(清华大学出版社)首先是最经典的冒泡排序void poposort(int a[],int n){ int i,j; for(i=0;i<n-1;i++) for(j=0;j<n-1-i;j++) if(a[j]>a[j+1]) { int temp; temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; }}快速排序/*快速排序的基本思想:是通过原创 2022-05-15 17:12:39 · 396 阅读 · 0 评论 -
【数据结构】树和图04——关键路径
输入:为顶点个数n,弧的个数m,各个顶点的序号,接下来是m个弧的起点、终点、权值输出:关键路径包括的各个弧样例输入:9 111234567891 2 61 3 41 4 52 5 13 5 14 6 25 7 95 8 76 8 47 9 28 9 4样例输出:v1->v2,t=0v2->v5,t=6v5->v8,t=7v5->v7,t=7v7->v9,t=16v8->v9,t=14#include <s原创 2022-04-11 10:37:44 · 874 阅读 · 0 评论 -
【数据结构】树和图03——图的遍历
/图的深度优先搜索遍历——DFS/采用邻接矩阵,时间复杂度为n*^2。如果采用邻接表存储,DFS的时间复杂度会变成n+e。在BFS中我会采用邻接表的存储方法。本程序的输入输出:样例输入60 0 0 1 0 00 0 1 1 0 00 1 0 1 0 01 1 1 0 0 00 0 0 0 0 10 0 0 0 1 0样例输出0 3 1 2 4 5#include<stdio.h>#define max 50#define maxcost 10000typedef原创 2022-04-11 10:35:10 · 675 阅读 · 0 评论 -
【数据结构】树和图02——最短路径问题
/最短路径的floyd和dijstra算法实现/1.使用了graph邻接矩阵数组作为存储结构。2.输入为一个矩阵,点的权为最短路径。输出结果为最短路径的长度。3.其中定义的maxcost意义为没有直接路径。输入输入的第一行包含2个正整数n和s,表示图中共有n个顶点,且源点为s。其中n不超过50,s小于n。 以后的n行中每行有n个用空格隔开的整数。对于第i行的第j个整数,如果大于0,则表示第i个顶点有指向第j个顶点的有向边,且权值为对应的整数值;如果这个整数为0,则表示没有i指向j的有向边。当i和j原创 2022-04-11 10:31:11 · 1171 阅读 · 0 评论 -
【数据结构】树和图01——最小生成树
/最小生成树/假设需要在n个城市之间建立通信联络网,则连通n个城市只需要n-1条线路。这时,自然需要考虑这样一个问题,即如何在最节省经费的前提下建立这个通信网。现在,需要选择一棵生成树,使总的耗费最小。1.输入输入的第一行包含一个正整数n,表示图中共有n个顶点。其中n不超过50。 以后的n行中每行有n个用空格隔开的整数,对于第i行的第j个整数,如果不为0,则表示第i个顶点和第j个顶点有直接连接且代价为相应的值,0表示没有直接连接。当i和j相等的时候,保证对应的整数为0。 输入保证邻接矩阵为对称矩阵,即原创 2022-04-11 10:28:40 · 925 阅读 · 0 评论 -
【数据结构】二叉树
二叉树的建立和遍历使用前序+左右孩子标志#的方式输入;输出依次为先序遍历、中序遍历、后序遍历、层次遍历、树的深度、树是否为完全二叉树。#include <bits/stdc++.h>#include<stdio.h>using namespace std;#define maxn 2000#define error 1#define ok 0#define no 1typedef int status;char str[2000];typedef struct原创 2022-04-04 17:54:32 · 822 阅读 · 0 评论 -
【数据结构】栈——杨辉三角问题
#include<stdio.h>#include<string.h>#include<malloc.h>#define error 1#define ok 0typedef int elem;typedef int status;typedef struct qnode{ elem data; struct qnode *next;}qnode,*queueptr;typedef struct{ queueptr front原创 2022-03-26 20:32:24 · 1605 阅读 · 0 评论 -
【数据结构】KMP算法
/KMP算法/和改进的KMP算法原创 2022-03-26 20:30:07 · 622 阅读 · 0 评论 -
【数据结构】链表的基本操作(C语言)
//Operation/* linklist_init_behind(head); //后插法建立链表 linklist_insert_e_behind(head,e); //插入元素e,后插 linklist_init_front(head); //前插法建立链表 linklist_insert_e_front(head,e); //插入元素e,前插 linklist_empty(head); //判断链表是否为空原创 2020-11-01 14:45:03 · 150 阅读 · 0 评论 -
【数据结构】线性表经典例题(C语言)
题目一``:大整数加法题目描述:计算两个大整数的和。大整数是指超过了c,c++表示范围的整数,如1234567890000000000000000000输入:输入包括两个大整数,每个大整数不超过100位,用空格或者换行隔开输出:输出两个大整数的和样例输入:222222222222222222222333333333333333333333样例输出:555555555555555555555#include<stdio.h>#include<string.h>原创 2020-09-21 10:08:13 · 2689 阅读 · 3 评论 -
【数据结构】线性表的基本操作(C语言)
//Operation/* list_init(L); //初始化线性表 list_empty(L); //判断线性表是否为空 list_get_elem(L,i); //获取第i个位置的数据 list_search_e(L,e); //查找与数据e相等的元素 list_insert_e(L,i,e);//在第i个位置插入元素 list_delete_location(L,i);//删除第i个位置的元素 list_delete_e(L,e原创 2020-11-01 14:43:47 · 539 阅读 · 0 评论