- 博客(9)
- 收藏
- 关注
原创 图的遍历(DFS)
深度优先遍历:(思想:递归)1.访问顶点v;2.选择一个与顶点v相邻且没有被访问过的顶点w,从w触发深度优先遍历;3.知道图中的与v相邻的所有顶点都被访问过为止;深度优先遍历的递归:vis[max]={0};//全局变量用于记录顶点是否访问过 void dfs(adjgraph *g,int v){ int w; arcnode *p; printf("%d ",v);//访问...
2020-02-25 22:06:19 169
原创 图的存储结构(邻接矩阵)
图有两种主要的存储结构:邻接矩阵和邻接表邻接矩阵时表示顶点之间相邻关系的矩阵。邻接矩阵的主要特点:(1)一个图的邻接矩阵表示是唯一的;(2)特别适合于稠密图的存储;图的邻接矩阵存储类型声明:#define INF INT_MAX#define max 30//最大顶点个数typedef char VertexType[10];typedef struct vertex{ i...
2020-02-25 21:51:57 1801
原创 丑数
题目Ugly numbers are numbers whose only prime factors are 2, 3 or 5. The sequence1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, …shows the first 11 ugly numbers. By convention, 1 is included.Write a program to...
2020-02-17 20:56:13 141
原创 C语言---栈实现括号匹配
输入圆括号,中括号,大括号的字符串(即:([{}]) ),进行判断代码如下:#include<stdio.h>#include<string.h>int main(){ int i,top=0; char s[1000],a[1000];//s为栈,a用于存储输入的字符串 scanf("%s",a); for(i=0;i<strlen(a);i++)...
2020-02-08 14:51:43 709 1
原创 C语言排序---随机化快排
在输入序列有序时,快排的时间复杂度最大,效率就会很低,所以如果在数据很大并且基本有序的情况下,可以选择随机化快排。随机化快排代码与普通快排的不同之处:将随机化快排中的随机到的某个数值,记为基准数与第一个数进行交换,变为普通快排的形式,会更易于理解。代码如下:#include<stdio.h>void quick(int a[],int start,int end){ if(...
2020-02-03 19:06:40 1064 2
原创 C语言----单链表的合并
将两个单链表按大小合并为一个单链表,分别用两个指针标记两个链表的第一个结点,将两个链表的每一个结点的数据大小进行比较,第一次比较后,将较小的一个连接在头结点的后面,后面以此类推,将小的一个依次连接在新的链表后面; 如果**不占用新的内存空间**,可以将原来的两个头结点选一个作为新链表的头结点。...
2020-02-03 18:43:28 6865 1
原创 C语言----单向链表的创建(头插法)
在单链表的创建中分为尾插和头插两种方法,尾插法创建的链表为正序的,与之对应的,头插法创建的链表则是逆序的。节点的声明struct Node{ int data; struct Node *next;//结构体类型的next指针 //是用于存下一个节点的地址}*head;//head则为头指针创建链表的代码如下:#include<stdio.h>#include<...
2019-12-22 22:12:13 386
原创 C语言之快速排序
快速排序相对于冒泡排序以及选择排序等,效率更高,也是非常重要的一个知识点基本思路:定义一个函数,将需要排序的数组的第一个元素下标记为 i 和最后一个元素下标记为 j ,再将第一个元素当做基准值。在自定义函数中,对数组首先将其小于基准值的数全部置于左侧,大于基准值的数则置于右侧。在进行完第二步以后,再使用递归,对第二步的最终基准值所在位置的左侧和右侧再次进行第二步的过程。代码如下:#...
2019-11-30 00:43:43 103
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人