- 博客(27)
- 收藏
- 关注
原创 数据结构-基于哈夫曼树的数据压缩算法
参照严蔚敏教材<<数据结构>>第2版描述输入一串字符串,根据给定的字符串中字符出现的频率建立相应哈夫曼树,构造哈夫曼编码表,在此基础上可以对待压缩文件进行压缩(即编码),同时可以对压缩后的二进制编码文件进行解压(即译码)。输入多组数据,每组数据一行,为一个字符串(只考虑26个小写字母即可)。当输入字符串为“0”时,输入结束。输出每组数据输出2n+3行(n为输入串中字符类别的个数)。第一行为统计出来的字符出现频率(只输出存在的字符,格式为:字符:频度),每两组字符之间用一个
2020-06-20 13:23:32
4129
2
原创 数据结构-利用二叉树求解表达式的值
参照严蔚敏<<数据结构>>第2版算法5.12和5.13当输入 ‘#’ 时代表表示式结束算法实现:#include <iostream>using namespace std;//定义表达式树typedef int TreeElemType;typedef struct TreeNode { TreeElemType data; struct TreeNode* lchild, *rchild;}TreeNode,*ExpTree;//定义树栈typ
2020-06-20 09:29:43
9974
8
原创 数据结构-用栈实现表达式求值
参照严蔚敏<<数据结构>>第2版算法3.22当输入 ‘#’ 时代表表示式结束算法实现:#include <iostream>#include <stdio.h>#include <stdlib.h>using namespace std;//定义栈的数据结构typedef int ElemType;typedef struct StackNode { ElemType data; struct StackNode* next;
2020-06-19 22:45:36
1267
原创 C++实现socket网络通信CSock类的封装
1.头文件//SockLi.h#pragma once#include <WinSock2.h>class CSockLi{protected: SOCKET m_hSocket;public: BOOL GetPeerName(char* rSocketAddress, UINT& rSocketPort); BOOL GetSockName(char* ...
2020-02-12 16:10:19
910
3
原创 C语言实现Windows下的socket编程
一、UDP(数据报)协议UDP: User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。1.1Server(服务器):接收端#define _WINSOCK_DEPRECATED_NO_WARNINGS#incl...
2020-02-11 13:33:28
1425
1
原创 C语言网络族函数htonl()、htons()、inet_addr()、inet_ntoa()实现
1.htonl()、htons()函数实现(1) htonl(): 将主机数转换成无符号长整型的网络字节顺序(2) htons(): 将主机数转换成无符号短整型的网络字节顺序#include <WinSock2.h>/*typedef unsigned char u_char;typedef unsigned short u_short;typedef unsign...
2020-02-10 19:36:05
2400
原创 C++基于二叉树开发模板化CMap类
1.头文件#pragma oncetemplate<typename KEY, typename VALUE>class CMap{ struct SNode { KEY key; VALUE value; SNode* pLeft, *pRight; SNode(KEY &key, VALUE &value) :key(key), valu...
2020-02-09 17:53:22
384
1
原创 C++基于哈希表开发模板化CMap类
1.头文件#pragma once#include <assert.h>#include <memory.h>template<class KEY, class VALUE, class ARG_VALUE=const VALUE&>class CMap{ struct SNode { KEY key; VALUE value;...
2020-02-06 15:41:29
289
原创 C++实现CListEx类派生MFC中Clist链表类实现表内表外排序的扩展功能
1.CListEx//ListEx.h#pragma once#include <afxtempl.h>template<class TYPE, class ARG_TYPE = const TYPE&>class CListEx :public CList<TYPE, ARG_TYPE>{public: typedef bool(*S...
2020-02-04 15:33:34
435
1
原创 C++开发模板化动态数组CArray类
1.头文件//Array.h#pragma oncetemplate<typename TYPE>class CArray{ int m_nSize; int m_nCount; TYPE* m_pData; void ReMalloc(int nCount);public: CArray(); ~CArray(); int GetSize() const...
2020-02-03 14:06:29
2179
1
原创 C++使用模板实现栈(Stack)和队列(Queue)的数据结构算法
一、 模板介绍1.函数模板的原理(a )每一次使用一个新类型去调用模板,编译器内部都按照该类型生成新类型的函数(b )这个生成新的具体类型函数的过程叫做模板的实例化(c )每有一个新的模板实例化,d等于内部新增加了一个函数,编译尺寸会变大2.类模板(a )类模板的实例化过程和函数模板一样,也是根据调用类型实例化生成新的一个类(b )类成员函数外编写需要重新指定:template &l...
2020-02-02 12:52:39
788
原创 C++开发字符串CString类
1.头文件//String.h#pragma once#include <string.h>#include <iostream>class CString{ char* m_pData; int m_nLength;public: CString(); CString(const char* p); CString(const CString&am...
2020-02-01 20:09:46
884
原创 C++运算符重载
一、运算符重载1.C++中可以重载的运算符::2.C++中不可以重载的运算符:3.C++中只能进行类内重载的运算符:=、()、[]、->自增自减运算符(++、–)、输入输出(>>、<<)、四则运算符(+、-、、/、+=、-=、=、/=)和关系运算符(>、<、<=、>=、==、!=)都是数学运算符,它们在实际开发中非常常见,被重载的几...
2020-01-31 19:59:44
438
原创 C++标准模板库STL链表类list实现表外排序
1.表外排序对链表的排序可分为表内排序和表外排序,表内排序将改变链表内原来的排列顺序,而表外排序不改变原链表中的排列顺序,并且排序效率也较高,我们可以借助指针数组(迭代器数组)的方法实现表外排序,代码如下所示:#include <list>#include <iostream>#include <random>#include <time.h&g...
2020-01-31 17:17:16
681
原创 C语言实现磁盘扫描
1.代码:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>#include <io.h>/*#define _A_NORMAL 0x00 // Normal fil...
2020-01-31 12:34:10
2260
原创 c++实现学生信息管理类
1.头文件//Student.h#pragma once#include "List.h"class CStudent{ CList m_list;public: CStudent(); ~CStudent(); void Start();private: int Menu(); int Input(); void Delete(); void Print(); v...
2020-01-31 12:30:49
876
原创 C++开发双向链表类CList
1.头文件//头文件 List.h#pragma oncetypedef int DATA;struct SNode{ DATA data; SNode *pPrev, *pNext;};typedef void* POSITION;class CList{ SNode *m_pHead, *m_pTail; int m_count;public: CList();...
2020-01-30 19:14:08
640
原创 C语言时间族函数time、localtime、mktime介绍
1.使用time和localtime函数获取时间#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <time.h>/*struct tm *localtime(const time_t *timer);*/int main(){ //获取时...
2020-01-29 14:44:25
2317
原创 C语言使用DOS参数传入实现简易计算器
一、程序如下:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>void calc(char *s){ char* pRes = strpbrk(s, "+-*/"); if (!pRes) { printf("本软件...
2020-01-29 12:45:09
302
原创 C语言str族函数strpbrk()函数介绍及其算法实现
一、strpbrk()函数介绍在C语言中,其函数原型格式一般为:char *strpbrk( const char *str, const char *strCharSet );函数功能:该函数在源字符串(str)中按从前到后顺序找出最先含有搜索字符串(strCharSet)中任一字符的位置并返回位置指针(char*),若找不到则返回空指针NULL。二、算法实现char*...
2020-01-29 12:40:54
2789
2
原创 C语言实现简易的学生管理系统
一、使用数组的方法#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <string.h>#include <stdlib.h>struct SUser{ int nNumb; char sName[20]; float fScore;};//定义全局数组SUser g_us...
2020-01-27 15:14:42
1257
原创 C语言实现文件复制的两种方法
一、使用fread()函数和fwrite()函数#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>int main(){ FILE* fp = fopen("file1.txt", "r");//源文件 FILE* fp1 = fopen("file2.txt", "w");//...
2020-01-26 14:49:25
5868
1
原创 C语言str族函数strchr、strstr以及内存族函数memset、memcpy算法实现
一、C语言str族函数strchr、strstr实现1.C语言strchr()函数实现算法char* StringChr(char *pSource, char c){ while (*pSource) { if (*pSource == c) return pSource; ++pSource; } return NULL;}2.C语言strstr()函数实现算...
2020-01-22 20:26:33
290
原创 C语言使用strtok函数对字符数组进行切分
1.C语言库函数strtok()介绍查看MSDN帮助手册,strtok函数的定义如下:char *strtok( char *strToken,//包含标记(分隔符)的字符串 const char *strDelimit //指定的分隔符(字符串));返回值:返回指向在 strToken中的下一个标记。 当未找到时,它们返回 NULL。 每次调用都通过将strToken字...
2020-01-22 10:04:41
1668
1
原创 C语言实现四种冒泡排序
1.从小到大排序1.1从左到右冒泡void Sort1(int *a, int n){ for (int i = 0; i < n - 1; ++i) { for (int j = 0; j < n - i - 1; ++j) { if (a[j] > a[j + 1]) { int temp = a[j]; a[j] = a[j +...
2020-01-22 09:25:27
1789
原创 C语言字符串翻转(Reverse)、小写字母转大写、大写字母转小写、查找、int数组排序算法实现
1.字符串翻转(Reverse)函数StringReverse()实现void StringReverse(char str[]){ //int len = StringLenght(str); //求字符串长度 int len=0; while (str[len]) ++len; for (int i = 0; i < len/2; ++i) { char tmp ...
2020-01-22 09:07:37
1643
原创 C语言str族函数strlen、strcpy、strcat、strcmp算法实现
1. 使用下标法实现strlen、strcpy、strcat、strcmp算法1.1 strlen函数功能算法实现:int StringLenght(char* str){ int i = 0; while (str[i]) ++i; return i;}1.2 strcpy函数功能算法实现void StringCopy(char *strDestination, cons...
2020-01-21 21:07:27
1035
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人