- 博客(19)
- 收藏
- 关注
原创 内部排序之基数排序
1. MSD(Most Significant Digit First)排序准则 对记录按关键字组(K0, K1, K2, … , Kd-1)进行排序时,先按K0排序,使K0相同的记录排列在一起,然后对K0相同的每个子序列按K1排序,使K0相同的每个子序列进一步细分为K1相同的若干个更小的子序列,如此重复,直至Kd-1排序结束。基于MSD准则的排序等效于按照关键字组比较大小的定义直接对关键字组比较大小来实现排序,即只需要定义如下关键字组比较大小的函数即可实现MSD准则排序。 一个例子(比较时间的大小) 定义
2021-02-04 18:01:48
773
原创 箱子排序(Bin Sort)
思想:通过对关键字进行“分配”和“收集”,将相同的关键字放入同一个箱子中(分配),即一个箱子中的所有关键字都是相同的,然后再将所有的箱子链接起来(收集)就得到了有序的链表。 一个例子 step a 输入链表 step b 分配 step c 收集 总的来说,该算法的时间复杂度是线性的即O(n) #include <cstdlib> #include <iostream> using namespace std; typedef struct LinkNode { in
2021-02-03 17:36:07
1372
原创 小游戏贪吃蛇
操作说明:通过键盘上的左键和右键控制“蛇头”向左或者向右移动,基本玩法和游戏规则与贪吃蛇是一致的。(想象自己是“蛇头”,面向前面进行左右操作) #include <cstdlib> #include <iostream> #include <list> #include <thread> using namespace std; #include <Windows.h> int nScreenWidth = 120; int nScreenHe
2021-02-03 16:53:33
321
2
原创 二分搜索法(迭代器实现)
#include <iostream> #include <vector> using namespace std; int main() { vector<int> v1; int i, temp, x; for (i = 0; i != 5; i++) {//输入5个数到vector容器中 cin >> temp; v1.push_back(temp); } cin >&
2021-02-03 16:48:05
228
原创 C:如何用递归的方法把输入的一个整数变为字符串整数输出
题目:输入一个整数,用递归将其变成字符串输出. 例如,输入-123,则输出“-123” #include <stdio.h> void main() { void f(char a[], int n, int i); void reserve(char a[], int cnt); char a[80]; int n, cnt = 0, i, m, k; printf("输入n:"); scanf("%d", &n); k = m
2021-01-01 12:10:21
1464
2
原创 学生成绩管理系统的设计与实现
#include<stdio.h> #include<stdlib.h> #include<string.h> #define max_size 30 //学生最大容量 #define max_course 6 //课程最大数量 typedef struct { //学生的信息 int *grades; int number; //学号 char *name; int sum_gardes; double ave_grade; }StudentTp; ty
2020-12-04 13:48:09
3249
原创 关于二叉树的一些基本算法
1.求树高 int height(BiT bt) { int hl,hr; if(bt==NULL)return 0; hl=height(bt->lchild); hr=height(bt->rchild); return (hl>hr?hl:hr)+1; } 2.求树中(出)度为1的结点数目 int f(BiT bt) { int nl,nr; if(bt==NULL)return 0; nl=f(bt->lchild); nr=f(bt->rchild
2020-11-15 23:31:50
1027
原创 求二叉树某结点在先序、中序、后序遍历中的访问次序
#include<stdio.h> #include<stdlib.h> typedef struct node { char data; struct node *lchild,*rchild; }*BiT,BiTNode; void main() { BiT create_BT(); void PreorderSearch_BT(BiT bt,char e,int &k); void MidorderSearch_BT(BiT bt,char e,int &am
2020-11-14 09:36:51
582
原创 关于C语言的位运算
1.输入一个float型数,以十六进制形式输出其32位机器数。 #include<stdio.h> void main() { float a; int *p; printf("Input a float number:\n"); scanf("%f",&a); p=(int *)&a; printf("%X",*p); } 2.从键盘输入一个二进制非负整数,屏幕上打印输出对应的十进制、八进制和十六进制数,要求输出的十六进制数中的英文字母为大写字母。 #includ
2020-11-10 19:49:10
4345
4
原创 中缀式求值以及将中缀式改写为后缀式
中缀表达式求值 #include <stdio.h> #include<stdlib.h> void main() { int isp(char ch); int icp(char ch); int isOperator(char ch); int compute(int a,char ch,int b); int OPND[5];int top1=-1; char OPTR[5];int top2=-1; OPTR[++top2]='#';//将‘#’入栈 cha
2020-11-06 15:41:31
162
原创 基于压缩存储的半三角矩阵乘法运算的实现
#include<stdio.h> #include<stdlib.h> void main() { int off(int i,int j);//偏移量函数off的函数声明 int i,j,s,n;int *pa,*pb,*pc; printf("请输入矩阵的阶数n="); scanf("%d",&n); pa=(int *)malloc(sizeof(int)*n*(n+1)/2); pb=(int *)malloc(sizeof(int)*n*(n+1)/2
2020-11-06 15:31:33
358
原创 串的模式匹配算法
一、BF(brute force)算法 #include<stdio.h> void main() { char s[]="abcdabcdaaabbbccc"; char t[]="aaabbb";//设定s为主串,t为模式(子串) int i=0,j=0; while(s[i]&&t[j])//当s,t中任一一个字符串空时结束循环 if(s[i]==t[j])//当前项s[i],t[j]匹配成功时,自动匹配下一个 { i++; j++; }
2020-10-17 14:47:00
749
原创 汉诺塔问题(递归和非递归算法)
#include<stdio.h> void hanoi(int n,char a,char b,char c) { if(n==1)printf("盘号:%d,%c-->%c\n",n,a,b); if(n==2) { printf("盘号:%d,%c-->%c\n",1,a,c); printf("盘号:%d,%c-->%c\n",2,a,b); printf("盘号:%d,%c-->%c\n",1,c,b); }//递归初始条件 if(n>
2020-10-16 16:38:30
558
原创 栈消递归的几个例子
//用堆栈的方式求组合数 #include <stdio.h> #include<stdlib.h> typedef struct { int *elem; int max_size;//栈的容量 int top;//栈顶指针 }SqStack; void main() { void Creat_Stack(SqStack &S,int n); void pop(SqStack &S,int &e); void push(SqStack &am
2020-10-16 14:34:49
605
原创 基于链表的多项式乘法
#include<stdio.h> #include<stdlib.h> /************************************************************************/ typedef struct polynode {//定义一个结构体表示多项式的一项 double c;//系数 int e;//指数 struct polynode *next;//要求结点按指数e升序连接 }PNode,*Polyn; /*****
2020-10-15 19:36:41
708
转载 智力游戏(黑白子交换)
/**************************************** * File Name : game.c * Creat Data : 2015.1.30 * Author : ZY *****************************************/ /*智力游戏*/ /*黑白子交换*/ /*七个格子,左三是白字=子,右三是黑子 要求交换黑子白子位置*/ #include <stdio.h> int number
2020-10-15 16:43:43
1480
1
原创 循环队列的基本算法
#include<stdio.h> #include<stdlib.h> typedef struct {//建立一个结构体 char *elem; int max_size;//队列最大容量 int f;//队头指针 int r;//队尾指针 }SqQueue; void main() { void init(SqQueue &q,int n);//初始化队列的函数声明 void enQueue(SqQueue &q,char e);//入队的函数声明
2020-10-15 16:40:55
1152
原创 线性表基本操作算法
//通过顺序表实现 #include<stdio.h> #include<stdlib.h> #define MAX_SIZE 10; typedef struct {//建立一个结构体 int *elem; int n;//顺序表的实际长度 int max_size;//顺序表的最大长度 }SqList; void main() { void Create_SqList(SqList &L);//建立一个顺序表的函数声明 void Insert_SqList(S
2020-10-15 16:39:35
844
原创 基于循环队列的排队买票模拟程序
#include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct { char ch[10]; }string; typedef struct { string *s; int max_size; int f; int r; }SqQueue; void main() { void init(SqQueue &q,int n); int empty(SqQueue &am
2020-10-15 16:36:36
879
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅