
C
CPJLJ
我承认这个递归我有赌的成分
展开
-
Huffman压缩(最终版)
这个程序有个大bug,就是稍大一点的文件不能先压缩在解压,只能压缩后退出程序再解压,不知道是不是内存问题#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>/*用Huffman算法写出一个程序实现文件的压缩(和解压缩)*///怎么输入数据,这里牵...原创 2020-04-28 09:19:11 · 387 阅读 · 0 评论 -
Huffman压缩(解压部分未完成)
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>/*用Huffman算法写出一个程序实现文件的压缩(和解压缩)*///怎么输入数据,这里牵扯到字母转ASCII二进制//输出二进制//大体流程//将读取的数据放进一个数组//这个数组的元...原创 2020-04-25 19:01:22 · 260 阅读 · 0 评论 -
路径压缩法和各种求并方法
`#include <stdio.h>#define MAX 16int pre[MAX + 1]; //寻找父节点void Initialize(int *S);void InitializeH(int *S);void InitializeS(int *S);void SetUnion(int *S, int Root1, int Root2);void SetUn...原创 2020-04-10 11:36:01 · 447 阅读 · 0 评论 -
常见排序代码实现
插入排序#include <stdio.h>typedef int ElementType;void InsertionSort(ElementType A[], int N);void InsertionSort(ElementType A[], int N){ int i, P; ElementType tmp; for (P = 1; P ...原创 2020-04-03 16:54:45 · 337 阅读 · 0 评论 -
归并排序的非递归实现
#include <stdio.h>#include <stdlib.h>typedef int ElementType;void Merge(ElementType A[], ElementType TmpArray[], int Lpos, int Rpos, int RightEnd);void MergeSort(ElementTyp...原创 2020-04-03 13:17:18 · 238 阅读 · 0 评论 -
对于二项队列的一道题
教材中二项队列的例程:#include <stdio.h>#include <stdlib.h>#include <limits.h>#define MaxTrees 10#define Capacity 10typedef struct BinNode *BinTree;typedef struct BinNode *Position;typ...原创 2020-03-29 16:31:49 · 251 阅读 · 0 评论 -
二叉堆例程
binHeap.h:#ifndef _BinHeap_Hstruct HeapStruct;typedef struct HeapStruct *PriorityQueue;typedef int ElementType;PriorityQueue Initialize(int MaxElements);void Destroy(PriorityQueue H);void Ma...原创 2020-03-27 10:56:37 · 381 阅读 · 5 评论 -
二叉堆的上滤和下滤
PriorityQueue UpFilter(int P, PriorityQueue H){ /*從P處開始上濾*/ /*如果父節點大於子節點*/ /*那麼父節點下移*/ int i; ElementType tmp; tmp = H->Elements[P]; for (i = P; H->Elements[i / 2] ...原创 2020-03-25 21:22:57 · 518 阅读 · 0 评论 -
用散列表合并两个多项式乘积的同类项
/*该程序利用散列的方式将两个稀疏多项式相乘后合并同类项*//*散列表的建立使用了分离链接法*/#include <stdio.h>#include <stdlib.h>#define HASHMODULUS 11 //散列函數的模數/*多项式的例程*/typedef struct Node *polynomial;typedef struct Node *...原创 2020-03-21 13:10:41 · 396 阅读 · 0 评论 -
执行双旋转的高效函数
//改程序是执行双旋转的函数,其效率超过执行两个单旋转#include <stdio.h>#include <stdlib.h>#include "AvlT.h"static Position doubleRotationWithLeft(Position K3);static Position doubleRotationWithLeft(Position K3...原创 2020-03-15 16:19:02 · 269 阅读 · 0 评论 -
AVL树例程
AvlT.h#ifndef _AvlT_Hstruct AvlNode;typedef struct AvlNode *Position;typedef struct AvlNode *AvlTree;typedef int ElementType;AvlTree MakeEmpty(AvlTree T);Position Find(ElementType X, AvlTree ...原创 2020-03-14 18:30:59 · 270 阅读 · 0 评论 -
树的类似链表游标实现方式
CursorBSt.h//该程序是二分查找树的链表游标的实现方式#ifndef _CursorBST_Htypedef int PtrToNode;typedef PtrToNode SearchTree;typedef PtrToNode Position;void InitializeCursorSpace(void);SearchTree MakeEmpty(Search...原创 2020-03-14 09:23:47 · 245 阅读 · 0 评论 -
一个数组实现两个栈的例程
//该程序仅用一个数组而实现两个栈的例程。//除非数组的每一个单元都被使用//否则你的栈例程不能有溢出声明#include <stdio.h>#include <stdlib.h>#define MinStackSize (5)typedef struct Node *dbstack; //双栈dbstack CreatStack(int Ma...原创 2020-03-11 11:56:17 · 1733 阅读 · 0 评论 -
该程序是一个非递归过程以O(N)时间反转单链表
大佬的算法 List ReverseList( List L ){ Position CurrentPos, NextPos, PreviousPos; PreviousPos = NULL; CurrentPos= L; NextPos= L->Next; while( NextPos != NULL ) { Curren...原创 2020-03-10 13:24:08 · 642 阅读 · 0 评论 -
多项式乘法O(M平方*N)
我的算法让我想到了“寄生虫”(难道是因为前不久看了这部剧?)#include <stdio.h>#include <stdlib.h>#define MAX 100typedef struct Node *PtrToNode;typedef PtrToNode Header;typedef PtrToNode FirstNode;typedef PtrTo...原创 2020-03-09 12:00:13 · 277 阅读 · 0 评论 -
多项式乘法O(M平方乘于N平方)
#include <stdio.h>#include <stdio.h>typedef struct Node *PtrToNode;typedef PtrToNode Header;typedef PtrToNode FirstNode;typedef PtrToNode Polynomial;void MultPolynomial(const Polyno...原创 2020-03-09 10:03:06 · 495 阅读 · 0 评论 -
生成前N个自然数的一个随机置换(3个算法)
#include <stdio.h>#include <stdlib.h>#include <time.h>int RandInt(int a, int b);int main(){ int N; int i; int ii; int a; int b; int duplicates = 0; //判...原创 2020-03-05 16:31:52 · 803 阅读 · 0 评论 -
根据SICP,对用C交换两个数值的新思考
一开始我的代码是这样写的思路就是:如果a>b,则b一路加到a, i=a-b,然后a=a-i=b;a<b同理#include <stdio.h>void Swap(int *, int *);int main(){ int x; int y; printf("Input the value of x: "); scanf("...原创 2020-02-20 11:10:51 · 194 阅读 · 0 评论 -
用C输入一个大写字母打印一个5层字母金字塔,高能预警!
最近在自学C语言,狂啃《C Primer Plus》里面有道题:让程序要求用户输入一个大写字母,使用嵌套循环产生像下面一样这样的金字塔团:就是上面这个直接上代码:#include <stdio.h>int main(void) { const int rows = 5; //总的行数 const int MIDDLE = 5; //中间行的位置 char let...原创 2019-11-10 22:04:52 · 2324 阅读 · 0 评论