数据结构/算法与应用 C++语言描述
DataStructure and Algorithm
小飞将
一切过往,皆为序章
展开
-
链表节点Node为结构体,内部包含前向和后向Node指针的结构体定义方式
【代码】链表节点Node为结构体,内部包含前向和后向Node指针的结构体定义方式。原创 2023-11-29 15:04:10 · 172 阅读 · 0 评论 -
C++实现内存池Memory Manager,并可以合并空闲内存空间
这个内存池的设计思想是使用链表(link list)来管理用户从内存池里开辟出的memory block,allocate操作从内存池中取出所需size的memory block,它不断从未使用的空间中通过指针偏移从已经分配的内存池中取内存,而无需直接使用malloc或者new。这个内存池的缺陷是无法整理不相邻的内存库,最后内存可能碎片化,这需要复杂的内存分配策略,例如最佳适配(best fit)、最差适配(worst fit)或伙伴系统(buddy system)。原创 2023-11-28 20:59:26 · 237 阅读 · 0 评论 -
数组实现可扩展的循环队列
arrayQueue.h// circular array implementation of a queue// derives from the ADT queue#ifndef arrayQueue_#define arrayQueue_#include "queue.h"#include "myExceptions.h"#include <sstream>using namespace std;template<class T>class arra转载 2020-12-30 13:55:40 · 326 阅读 · 0 评论 -
数组结构的栈实现
Stack.h#pragma oncetemplate <class T>class Stack {public: virtual void clear() = 0; // clean the stack virtual void push(const T&) = 0; // push T into stack virtual void pop() = 0; // pop top item in stack virtual T& top() = 0;原创 2020-12-28 23:07:07 · 111 阅读 · 0 评论 -
链表结构的栈实现
Stack.h#pragma oncetemplate <class T>class Stack {public: virtual void clear() = 0; // clean the stack virtual void push(const T&) = 0; // push T into stack virtual void pop() = 0; // pop top item in stack virtual T& top() = 0;原创 2020-12-28 22:22:32 · 92 阅读 · 0 评论 -
汉诺塔问题的递归实现
// TowersOfHanoi.cpp : This file contains the 'main' function. Program execution begins and ends there.//#include <iostream>#include <chrono>void towersOfHanoi(int n, int t1, int t2, int t3) { //将t1上所有盘移到t2 if (n > 0) {原创 2020-12-27 17:46:30 · 111 阅读 · 1 评论 -
链表的模板实现
BaseList.h#pragma oncetemplate <class T>class BaseList {public: typedef size_t pos; virtual void clear() = 0; // empty the list virtual bool isEmpty() = 0; // Is empty list? virtual void append(const T&) = 0; // add element原创 2020-12-26 18:33:29 · 178 阅读 · 0 评论 -
线性表的实现
ListBase.h// abstract data type for List template <class T> class List { void clear(); // 置空线性表 bool isEmpty(); // 线性表为空时,返回True bool append(T value); // 在表尾添加一个元素value,表的长度增1 bool insert(int p, T value);原创 2020-12-25 18:05:45 · 80 阅读 · 0 评论 -
几种排序算法
交换排序原创 2019-04-25 14:09:07 · 301 阅读 · 0 评论 -
斐波纳锲数列
斐波纳锲数列:fab.h#pragma once#include <iostream>#include <string>template <typename T>T fab(T n) { if (n == 0) return 0; if (n == 1) return 1; return fab(n - 1) + fab(n...原创 2019-12-01 18:20:39 · 318 阅读 · 0 评论 -
全排列
全排列#pragma once#include <stddef.h>#include <iostream>#include <string>#include <vector>template <typename T>std::vector<T> removeElement(std::vector<T>...原创 2019-11-24 17:44:57 · 176 阅读 · 0 评论 -
二维数组、赋值及销毁
create2dArray.h#pragma once#include <stddef.h>#include <exception>#include <iostream>using namespace std;template <typename T>bool make2dArray(T **&ptr, size_t row...原创 2019-11-17 21:28:09 · 364 阅读 · 0 评论 -
第一章习题
array count#include <iostream>#include <string>using namespace std;template <typename T, size_t N>size_t get_count(T (&arr)[N]) { return sizeof(arr)/sizeof(T);}vo...原创 2019-11-17 15:17:33 · 200 阅读 · 0 评论 -
传递数组引用作为参数给函数的形式
C++允许形参是数组的引用,此时,引用形参绑定到对应的实参上,也就是数组。void print(int (&arr)[10]) { for (auto i:arr) { cout << i << endl; }}需要保证的是:实参必须是含有10个整数的数组。一种更清晰的写法:typedef int arrTen[10];void print(a...原创 2019-11-17 13:08:13 · 2855 阅读 · 1 评论