数据结构和算法
追求远方,不负梦想!
落别雨
我欲匆匆 我欲远行
展开
-
广工anyview习题
广工anyview习题原创 2021-12-24 19:47:25 · 708 阅读 · 2 评论 -
交通网查询系统
基于图的数据结构实现交通网查询系统---C语言实现原创 2021-12-18 11:18:38 · 1266 阅读 · 3 评论 -
链表的常见操作
C语言实现链表操作原创 2021-12-15 23:17:16 · 1486 阅读 · 4 评论 -
C语言实现多维数组数据结构
C语言实现多维数组数据结构之多维数组各基本操作函数原型说明各基本操作的具体实现测试分析思考与小结1、 对数组的再认识2、调试过程中遇到的问题及解决方案3、算法的时间复杂度分析数据结构之多维数组定义结构体typedef struct { ElemType* base;//数组元素基址(数组基址) int dim;//数组维数 int* bounds;//数组维界基址(存放各位长度信息) int* constants;//数组映象函数常量基址}Array;各基本操作函数原型说明(1)原创 2021-12-10 20:50:22 · 1745 阅读 · 3 评论 -
将十进制数转化为任意进制数C语言实现
将十进制数转化为任意进制数C语言实现#include "allinclude.h" //DO NOT edit this linechar Compare(SqList A, SqList B) { // Add your code here int i = 0; while((i <= A.length-1) && (i <= B.length-1) && (A.elem[i] == B.elem[i])){ +原创 2021-09-25 13:31:05 · 1128 阅读 · 4 评论 -
数据结构和算法(线性数据结构)
线性数据结构包含n个相同性质数据元素的有限子列。. 基本特征:存在唯一的“第一个元素”存在唯一的“最后一个元素”除最后一个元素外,其他数据元素均有唯一的“直接后继”除第一个元素外,其他数据元素均有唯一的“直接前驱”前后关系是“一对一关系”,即线性关系。...原创 2021-09-05 23:11:30 · 274 阅读 · 7 评论 -
顺序栈及其各类操作
顺序栈采用顺序结构的栈称为顺序栈,即需要用一片地址连续的空间来存储栈的元素。=>可用一个数组来实现,并指定栈顶元素位于序列末端,每当新元素入栈或出栈时,数组中其他元素可不改变位置,只需改变栈顶位置即可。=>由于c语言数组的大小是预先固定的,空间存满后,则不能继续插入新元素;因此,可以采用动态分配的一段连续的存储空间来储存栈的元素。顺序栈的类型定义typedef struct{ ElemType * elem; //存储空间的基址 int top; //栈顶元素的下一个位置,简称栈顶位原创 2021-08-10 22:29:59 · 465 阅读 · 16 评论 -
最大子列和问题
算法复杂度体验题目:最大子列和问题给定N个整数序列{A1,A2,…,AN},求函数f(i,j)=max{0,Ai + … +Aj}的最大值三层循环,暴力破解,算法复杂度O(N^3)//时间复杂度O(N^3) int MaxSequenceSum1(int *a , int cnt){ int ThisSum, MaxSum = 0; int i, j, k; for( i = 0; i < N; i++){//确定左起点 for( j = i; j < N; j++原创 2021-07-30 21:17:35 · 443 阅读 · 14 评论 -
数据结构和算法(初涉)
一、绪论程序设计 = 数据结构 + 算法数据结构 → 数据元素相互之间存在的一种或多种特定关系的集合数据结构分为逻辑结构和物理结构逻辑结构:数据对象元素之间的相互关系物理结构:数据的逻辑结构在计算机中的存储形式四大逻辑结构集合结构:集合结构中的数据元素除了同属于一个集合外,它们之间没有其他任何关系(集合)线性结构:数据元素之间是一对一的关系(链表)树形结构:元素之间存在一种一对多的层次关系(树)图形结构:数据元素之间是多对多的关系(图)* 物理结构根据物理结原创 2021-07-28 06:21:04 · 576 阅读 · 19 评论 -
C语言实现归并排序
C语言实现归并排序/** 归并排序 (核心思想:分、治)* * 原理:* * 将每个数据看成一组 将数据进行两两分组* * 对每个分组进行排序* * 将分组后的小组两两分组 再次进行排序(逐个位置比较)* *///合并分区void merge(int arr[], int tempArr[], int left, int mid, int right){ //标记左半区第一个未排序元素 int l_cnt = left; //标记右半区第一个未排序元原创 2021-05-29 01:06:23 · 229 阅读 · 6 评论 -
C语言实现希尔排序
希尔排序/**希尔排序是一种更高级的插入排序* 原理:* 希尔排序通过确定的某一增量(gap)将数组分成若干组* * 对每一个分组进行插入排序 使得每一组分组的数据达到有序* * 逐步缩小增量 达到小的基本在前 大的基本在后* * 当增量缩小到1时 整个数据分到一组 排序后达到全部有序状态*/#include <stdio.h>//希尔排序void shell_sort(int arr[], int len) { int gap, i, j, tem原创 2021-05-28 14:10:43 · 250 阅读 · 0 评论 -
C语言实现直接插入排序
插入排序/** 直接插入排序* 原理:* 将待排序序列第一个元素看做一个有序序列* * 从头到尾依次遍历未排序序列* * 将遍历到的每个元素插入有序序列的适当位置*/#include <stdio.h>//插入排序void insertion_sort(int arr[], int len) { int i, j, k; for (i = 1; i < len; i++ ) { k = arr[i]; j = i - 1; while ((原创 2021-05-28 13:59:58 · 296 阅读 · 0 评论 -
C语言实现选择排序以及其时间、空间复杂度
选择排序/** 选择排序* 原理:* 首先在未排序序列中找到最小(大)元素存放到排序序列的起始位置* * 再从剩余未排序元素中继续寻找最小(大)元素放到已排序序列的末尾* * 重复第二步,直到所有元素均排序完毕*/int main(){ //个数 = 总字节数 / 单个字节数 int len = (int)sizeof(arr) / sizeof(*arr); int arr1[] = { 45,3,6354,45,34,6,432,5745,3423,3423 };原创 2021-05-28 01:48:33 · 757 阅读 · 3 评论 -
C语言实现冒泡排序、时间复杂度和空间复杂度
C语言实现冒泡排序、时间复杂度和空间复杂度/** 冒泡排序* 原理:* 遍历要排序的数列* 将数据两两比对* 顺序错误则交换* 重复上述步骤* 直到达到排序效果*/ int main() { int arr[] = { 45,3,6354,45,34,6,432,5745,3423,3423 }; //个数 = 总字节数 / 单个字节数 int len = (int)sizeof(arr) / sizeof(*arr); //冒泡排序 bubbl原创 2021-05-27 22:35:05 · 496 阅读 · 1 评论 -
C语言求最大公约数
C语言求最大公约数main函数1、辗转相除法2、枚举法3. 更相减损法(辗转相减法)4. stein算法main函数/* main方法: 用x、y来接收所输入两个数,调整两者大小,保证y > x; #include <stdio.h>int main(){ int x, y; printf ("请分别输入两个整数:"); scanf ("%d %d", &x, &y); //保证y > x if (x > y) { int原创 2021-05-08 17:41:13 · 192 阅读 · 0 评论