- 博客(52)
- 收藏
- 关注
原创 Huffman压缩(最终版)
这个程序有个大bug,就是稍大一点的文件不能先压缩在解压,只能压缩后退出程序再解压,不知道是不是内存问题#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>/*用Huffman算法写出一个程序实现文件的压缩(和解压缩)*///怎么输入数据,这里牵...
2020-04-28 09:19:11
385
原创 Huffman压缩(解压部分未完成)
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>/*用Huffman算法写出一个程序实现文件的压缩(和解压缩)*///怎么输入数据,这里牵扯到字母转ASCII二进制//输出二进制//大体流程//将读取的数据放进一个数组//这个数组的元...
2020-04-25 19:01:22
260
原创 路径压缩法和各种求并方法
`#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
445
原创 常见排序代码实现
插入排序#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
336
原创 归并排序的非递归实现
#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
原创 对于二项队列的一道题
教材中二项队列的例程:#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
250
原创 二叉堆例程
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
379
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
原创 用散列表合并两个多项式乘积的同类项
/*该程序利用散列的方式将两个稀疏多项式相乘后合并同类项*//*散列表的建立使用了分离链接法*/#include <stdio.h>#include <stdlib.h>#define HASHMODULUS 11 //散列函數的模數/*多项式的例程*/typedef struct Node *polynomial;typedef struct Node *...
2020-03-21 13:10:41
394
原创 执行双旋转的高效函数
//改程序是执行双旋转的函数,其效率超过执行两个单旋转#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
266
原创 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
原创 树的类似链表游标实现方式
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
原创 一个数组实现两个栈的例程
//该程序仅用一个数组而实现两个栈的例程。//除非数组的每一个单元都被使用//否则你的栈例程不能有溢出声明#include <stdio.h>#include <stdlib.h>#define MinStackSize (5)typedef struct Node *dbstack; //双栈dbstack CreatStack(int Ma...
2020-03-11 11:56:17
1733
原创 该程序是一个非递归过程以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
639
原创 多项式乘法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
275
原创 多项式乘法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
原创 生成前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
800
原创 问题13.11
试对图3-23所示的“Emai地址验证”程序儆出修改,新的合法性验证要求,在E-mail地址宇符串中,符号@前、符号@和.之间、符号.之后,至少存在一个字母。满足这种要求的Emal地址,才认为是合法的。#include <stdio.h>#define FAlSE 0#define TRUE 1int main(){ char nextChar; ch...
2020-02-20 13:24:17
175
原创 根据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
原创 修改的毕达哥拉斯三角形代码
#include <stdio.h>int Squared(int x);int main(){ int sideA; int sideB; int sideC; int maxC; printf("Enter the maxium length of hypotenuse: "); scanf("%d", &max...
2020-02-18 12:07:07
341
原创 计算机系统概论问题10.9
c. 4! = 24考虑不会出现的pop情况假设W先popwz __,wy __这两种不会发生,即4种假设X先pop有两种情况:X POP之后,W Push 进,那么xy__,xz__这两种情况不会发生,即4种x POP之后, W 不Push进,那么xz__这种情况不会发生,即2种因此,总输出流形式有: 24-4-4-2=14种...
2020-02-16 14:53:13
236
原创 在LC- 3中,机器码实现右移一位
将x3100内存单元的内容右移一位我的思路是:一个十进制的数,如果是偶数,将它除于2再转换为十六进制就是它又移一位的结果;如果是奇数就减1再除于2如果最后一位是1就是奇数,否则就是偶数一位LC-3的ISA中没有除法,R2初始化为0,将它乘于2(即R2+R2),如果结果等于X3100的内容,那么R2就是我们要的结果;如果不是,将R2再加1重复前面的操作下面是我的答案:...
2020-02-10 16:59:44
2543
4
原创 比较器逻辑实现
开始啃《计算机系统概论》,补充下计算机基础知识如图,A > B,G = 1; A = B, E = 1; A < B, L = 1应该是这样吧:
2020-02-07 15:08:38
1119
原创 八皇后问题
valid_queen((Row, Col)) :- Range = [1,2,3,4,5,6,7,8], member(Row, Range), member(Col, Range).valid_board([]).valid_board([Head|Tail]) :- valid_board(Head), valid_board(Tail).rows([],[])....
2020-02-03 15:11:00
197
原创 奈何本人没文化,一句卧槽行天下
解决一个4X4的数独valid([]).valid([Head|Tail]) :- fd_all_different(Head), valid(Tail).sudoku(Puzzle, Solution) :- Solution = Puzzle, Puzzle = [S11, S12, S13, S14, ...
2020-02-03 14:36:04
679
原创 逻辑学的知识全部退给老师了
刚刚上个月初考了逻辑学,用Prolog还是一脸懵,更何况我还学习了离散数学的知识...Q: 翻转一个列表中的元素次序。只要证明第二个列表的Tail等于第一个列表的Head就行了吧(十分没有底...)reverse([Head1|Tail1], [Head2|Tail2]) :- Tail2 is Head1. 卧槽!可是...我都不知道Prolog是怎么得出结果的? 无法解...
2020-02-03 12:00:03
204
原创 初次适用prolog
# writer(A, B) A是书B的作者writer('Kenneth', 'C').writer('Brice A.Tate', 'Seven').writer('Harold Abelson Gerald', 'SICP').writer('BobDay', 'a').writer('BobDay', 'b').# musician(A, B). A会弹奏Bmusician...
2020-02-02 14:52:18
319
原创 Prolog基本知识
和SQL一样,Prolog基于数据库,但是其数据有逻辑规则和关系组成。在Prolog中,数据以逻辑规则的形式存在,下面是基本构造单元。事实。事实是关于真实世界的基本语言。(Babe是一头猪,猪喜欢泥巴。)规则。规则是关于真实世界中一些事实的推论。(如果一个动物是猪,那么它喜欢泥巴。)查询。查询是关于真实世界的一个问题。(Babe喜欢泥巴吗?)事实和规则被放入一个知识库(knowled...
2020-02-02 10:09:55
1117
原创 协程
vizzini := Object clonevizzini talk := method( "Fezzik, are there tocks ahead?" println yield // 自动挂起当前进程, 并把控制权转到另一进程当中 "No more rhymes now, I mean it." println ...
2020-02-01 21:09:06
146
原创 Io的method_mission
当你把消息发送给对象的时候,对象将完成下列事情:1.计算所有参数,这些参数其实就是消息;2.获取消息的名称,目标和发送者;3.尝试用目标上的消息名称读取槽;3.如果槽存在,返回其数据或触发其包含的方法;4.如果槽不存在,则把消息转发给它的方法。用Io代码来表示XML数据即将 <body> <p> This is a simple par...
2020-02-01 18:57:25
222
原创 DSL
// 电话号码的形式 -- 在文件phonebook.txt中{ "Bob Smith" : "5195551212", "Mary Walsh" : "4162223434"}// 把列表代碼解釋為Io散列表的形式OperatorTable addAssignOperator(":", "atPutNumber")curlyBrackets := method( //...
2020-02-01 18:24:27
250
原创 计算列表所有数字的平均值
List myAverage := method( if(self isNotEmpty, testType(self), 0) )testType := method( list, if(list select(type == "Number") == list, list average, Exception raise( "Exception...
2020-02-01 15:03:19
3474
原创 求和二维数组
这家伙连局部作用域都没有,摸索了好久不过Io这个基于原型的语言,确实在了解Io之后,我对JavaScript运行机制的理解多了一点我一开始的代码y := 0sumArr := method( Arr, if(Arr at(0) type == "List", sumArrsub(Arr), Arr sum) )sumArrsub := method( ...
2020-02-01 12:17:38
483
原创 分母为零处理(待解决)
这个,我是真不会Number / := method(denominator, if(denominator == 0, 0, Number / denominator))我的遇到的问题有两个:后面的Number是0,不是前面的那个number我这个代码已经变成了递归,没有基准条件,因此是个死循环...
2020-02-01 10:03:08
4203
原创 迭代/递归 Io语言写个斐波拉契
**初次用Io写斐波拉契搞了我一下午,我 TM 终于知道Io的“消息"怎么用的了Io文档什么都没讲,气!先上js代码:// 迭代function fib0(n){ var first = 1; second = 1; third = first + second, count = 3; if(n < 2)...
2020-01-31 16:26:17
180
原创 lambda终结者
;(define rember-f ; (lambda(test? a l) ; (cond ; ((null? l)(quote())) ; (else(cond ; ((test?(car l)a)(cdr l)) ; (else(cons(car l) ; (rember...
2020-01-03 16:00:18
233
1
原创 朋友及关系
(define set? (lambda(lat) (cond ((null? lat)#t) ((member?(car lat)(cdr lat)) #f) (else(set?(cdr lat))))))(define multirember (lambda(a lat) (cond ...
2020-01-02 19:49:47
194
原创 如影随形 魔法禁忌
(define numbered? (lambda (aexp) (cond ((atom? aexp)(number? aexp)) ((eq?(car(cdr aexp))(quote +)) (and(numbered?(car aexp)) (numbered? (car(cdr(cdr aex...
2020-01-01 22:43:42
340
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人