- 博客(13)
- 收藏
- 关注
转载 数据结构与算法——算法、时间空间复杂度、线性表
一.算法1.推导大O阶方法:2.常见的时间复杂度:3.最坏情况与平均情况4.算法的空间复杂度二.线性表1.线性表定义: 由0个或多个数据元素组成的有限序列。注意:他是一个序列;若存在多个元素,则第一个元素无前驱,最后一个元素无后继,其他元素都有且只有一个前驱和后继;线性表强调有限的。2.线性表的顺序存储结构:结构代码:#include <stdio.h>#define MAXSZIE 20;typedef int ElemTy
2021-12-03 11:58:38 687
原创 C语言——二维数组算法问题
问题一:求矩阵各行元素之和题目要求:本题要求编写程序,求一个给定的m×n矩阵各行元素之和。输入格式:输入第一行给出两个正整数m和n(1≤m,n≤6)。随后m行,每行给出n个整数,其间以空格分隔。输出格式:每行输出对应矩阵行元素之和。输入样例:3 26 31 -83 12输出样例:9-715解题思路:输入行列,然后依次输入矩阵 遍历矩阵,每当遍历完一行一列,就做加法计算,并打印,然后把总和归零,继续进入下次循环 。代码实现:...
2021-11-21 15:48:09 6239
原创 C语言——字符串问题合集(1)
问题一:字符串反转题目要求:输入一个字符串(可包含任何非控制字符),对该字符串进行反转操作,操作要求,只对字母进行反转,其他非字母字符都要求保留在原地。输入格式:在一行输入长度不超过100的字符串输出格式:在一行输出对字符串中字母进行反转操作后的字符串输入样例1:a-bC-d输出样例1:d-Cb-a输入样例2:He llo+world!输出样例2:dl row+olleH!解决思路:分别从两头出发,遍历整个字符串,如果两边都是英.
2021-11-20 17:07:37 3451
原创 C语言——经典约瑟夫环问题(循环链表)
题目要求:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人自杀;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,请问:最后一个存活的人编号是多少。输入格式: 3个数n k m(含义如上题)输出格式: 最后一个出列的人编号。样例输入:6 1 2样例输出:5算法思路:约瑟夫环是一道经典的循环链表问题,每当报数到指定数字,那个人就出局,接下来的一个人重新开始报数,相当...
2021-11-19 20:36:33 2191
原创 链表删除指定节点问题
题目要求:创建一个长度为n的链表,然后删除链表的倒数第x个结点,并输出删除操作后的链表。输入样例:5 21 2 3 4 5输出样例:1>2->3->5方法一:普通链表删除操作实现:这种方法相对简单一些,主要是找到倒数第x结点的位置,然后执行删除操作,具体实现如下 :#include <stdio.h>#include <stdlib.h>typedef struct node{ int d...
2021-11-19 15:06:03 828
原创 C语言——链表(增删改查/遍历/元素个数)
链表结构体声明:首先,在创建一个链表之前,我们要先创建一个链表单个节点的结构体,分别包含数据域和指针域,具体实现如下:typedef struct node{ int data; //数据域 struct node *next; //指针域}Node,*Link;单链表的创建:创建一个带有头结点的链表,虽然不是必须的,但是很方便。Link create(){ Link head = NULL; head = (Link)malloc
2021-11-19 14:11:44 2899 3
原创 Bsearch排序(与Qsort结合)
声明:若想使用bsearch,事先需要有已排序好的数据,通常与qsort一起用。代码实现:(以结构体为例)#include <stdio.h>#include <stdlib.h>typedef struct { char name[10]; int Chinese; int math; int English; int sum;}student; student stu[7] = { {"Tom",97,68,45}, {"Jerr
2021-11-19 10:00:00 241
原创 Qsort快速排序法
题目要求:本题要求将给定的n个整数从小到大排序后输出。代码实现:#include <stdio.h>#include <stdlib.h> //qsort需要调用函数库int cmp(const void *a,const void *b); //定义一个比较函数 int main(){ int n,i; scanf("%d",&n); int arr[n]; for(i = 0;i < n;i++) {
2021-11-19 09:15:00 253
原创 冒泡排序法
题目要求:本题要求将给定的n个整数从小到大排序后输出。代码实现:#include <stdio.h>int main(){ int n,i; scanf("%d",&n); int arr[n]; for(i = 0;i < n;i++) { scanf("%d",&arr[i]); } int temp; for(i = 0;i < n - 1;i++) //注意循环条件 { for(int.
2021-11-19 08:45:00 782
原创 最大公约数(两种实现方法)
两个正整数的最大公约数是能够整除这两个整数的最大整数输入样例:50 15输出样例:5方法一:普通函数实现代码实现:#include <stdio.h>int gcd(int x,int y);int main(){ int x,y; scanf("%d %d",&x,&y); printf("%d\n",gcd(x,y)); return 0; } int gcd(int x,int y){ while(y != 0..
2021-11-19 08:00:00 1464
原创 选择排序法
题目要求:本题要求将给定的n个整数从小到大排序后输出。代码实现:#include <stdio.h>int main(){ int n,i; scanf("%d",&n); int arr[n]; for(i = 0;i < n;i++) { scanf("%d",&arr[i]); } //从小到大排序 int min,temp; for(int i = 0;i < n;i++) { min = i; .
2021-11-18 20:11:24 908
原创 C语言——双指针问题
问题一:要求编写程序,将顺序读入的n个非负整数存入数组中,然后编写一个函数,调整该数组中元素顺序,使所有偶数元素之后跟着所有奇数元素。你可以打印满足此条件的任意数组作为答案。(注意需要在原数组上操作,不能开辟一个新的空间来存数组)输入格式:第一行输入 n代表元素个数,然后依次输入 n个非负整数。输入样例:431 2 4输出样例:24 3 1(或4 2 3 1或2 4 1 3或4 2 1 3中的任意一种)思路: ...
2021-11-16 14:15:31 1785 1
原创 C语言——一维数组算法问题
问题1:将数组中的数逆序存放本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放, 再按顺序输出数组中的元素。算法描述:1.向数组a中输入元素; 2.定义一个新数组new,将数组a中的元素倒序存放; 3.将数组b正序输出,注意结尾无空格的格式问题。代码实现 :#include <stdio.h>int main(){ int n; scanf("%d",&n);...
2021-11-14 19:19:30 6937 7
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人