
数据结构
文章平均质量分 77
自由不死
率性而行,适情而止
展开
-
线性表(顺序存储)结构与功能的简易实现
"SqList.h"#pragma once#define LIST_INIT_SIZE 10 //初始分配量#define LISTINC 5 //增长量templateclass SqList{public: typedef T ElemType; SqList(void){ elem = (T *)malloc(LIST_INIT_SIZE*sizeof(T));原创 2014-03-02 11:21:11 · 1469 阅读 · 0 评论 -
C++实现静态链表
#includeusing namespace std;const size_t MAXSIZE =100;typedef struct SListNode { int data; size_t cur; }StaticList[MAXSIZE]; //初始化链表函数 void InitSList(StaticList & space ) { for(int i=0;原创 2014-03-27 00:17:35 · 3192 阅读 · 0 评论 -
循环顺序队列
#includeusing namespace std;const int MAXQSIZE = 5;//队列类templatestruct LinkList{ T * data;//指向连续的数据存储区域 int front;//头指针 指向第一个元素 int rear;//尾指针 如果队列不为空指向最后元素的下一个位置};//构造一个空队列templatevoid原创 2014-05-09 00:19:16 · 1230 阅读 · 0 评论 -
C++大整数
这两天一直在利用一些课余的琐碎时间在写C++大整数,昨天晚上终于基本完工了,利用到的思想就是:用一个连续的int型的存储空间去表示大整数和进行运算。在运算时将该大整数拆分成一个多项式,然后按照多项式的规则进行运算,最后在输出显示该大整数时再将该大整数的每一项进行调整到0到9之间。本程序的缺点就是存储空间利用率较低,有待优化的地方还很多。嗯。。等过几天有时间了再来优化吧。BigInt原创 2014-04-22 22:23:23 · 3117 阅读 · 0 评论 -
数制转换-栈的应用(C++实现)
本程序实现的是十进制与不同进制之间的的数据转换,利用的数据结构是栈,基本数学方法辗转相除法。conversion.h#includeusing namespace std;//将十进制的数据n转换成m进制的数据stack conversion(unsigned int n,unsigned int m){ stack s; while(n) { s.push(n%m);原创 2014-04-22 22:44:01 · 2548 阅读 · 0 评论 -
图的应用详解-数据结构
概述最小生成树——无向连通图的所有生成树中有一棵边的权值总和最小的生成树拓扑排序 ——由偏序定义得到拓扑有序的操作便是拓扑排序。建立模型是AOV网关键路径——在AOE-网中有些活动可以并行地进行,所以完成工程的最短时间是从开始点到完成点的最长路径的长度,路径长度最长的路径叫做关键路径(Critical Path)。最短路径——最短路径问题是图研究中的一个经典算法问题转载 2014-04-09 00:05:33 · 5781 阅读 · 0 评论 -
利用数据结构栈求解迷宫问题
本段程序主要利用数据结构栈的先进后出特点,实现回溯求解迷宫路径问题。#include#includeusing namespace std;//坐标类struct Point{ int x; int y;};//地图类templatestruct Map{ int (*p)[A]; int row;//行数 int col;//列数};//start起始点,原创 2014-05-11 22:22:09 · 2017 阅读 · 0 评论 -
串(C++实现)
本段程序实现串的存储结构是采用堆的动态分配存储表示,并实现了几乎所有常用的串的配套函数其中逻辑性比较强的就是串的模式匹配算法,在下面的程序中,分别用BF算法和KMP算法对其进行了实现。#includeusing namespace std;struct HString{ HString() { ch = 0; length = 0; } char * ch;//原创 2014-05-11 22:16:10 · 3505 阅读 · 2 评论 -
蚁群算法求解TSP问题
蚁群算法的第一个算法就是蚂蚁系统,而蚂蚁系统有三种基本模型分别是蚁周模型、蚁密模型、蚁量模型。三种模型的实现大致相同,主要区别是在信息素的更新方式上。在用蚂蚁系统解决T SP问题时,蚁量模型和蚁密模型是蚂蚁在构建一条合法路径的过程中进行信息素的更新的,当蚂蚁走过一条边之后,就对该边进行信息素的更新,即为局部更新方式。而蚁周模型是在所有蚂蚁都构建了一条合法路径之后才对各边进行原创 2014-04-28 17:04:27 · 4216 阅读 · 0 评论 -
链队列的C++实现
#includeusing namespace std;//节点类templatestruct QNode{ T data; QNode *next;};//队列类templatestruct LinkList{ QNode * front; QNode * rear; size_t size;};//构造一个空队列templatevoid InitQueu原创 2014-05-08 00:01:13 · 3450 阅读 · 3 评论 -
线性表链式存储C++实现
#include"LsList.h"#include#include#includeusing namespace std;#pragma oncetemplateclass LsList{public: class LNode{ public: T data;//数据域 LNode * next;//指针域 ~LNode()原创 2014-03-24 23:40:04 · 2000 阅读 · 2 评论 -
链式线性表表示和求解一元多项式问题
#includeusing namespace std;struct LNode{ //节点类 double p;//系数项 int e;//指数项 LNode * next;};class LsList{//一元多项式链式线性表private: LNode head;//头结点 size_t size;//节点个数 double mx;//一元多项式的变量值publi原创 2014-04-04 07:57:02 · 1837 阅读 · 0 评论 -
双向循环链表C++实现(完整版)
#includeusing namespace std;/**节点类*/struct DCNode{ int data; DCNode * prior; DCNode * next;};/**链表类*/struct DCList{ DCList() { size = 0; } size_t size;//记录节点数的个数 DCNode * hea原创 2014-03-29 10:58:41 · 8408 阅读 · 0 评论 -
顺序线性表表示一元多项式C++实现
在用线性表来解决一元多项式的相关问题时为了节约存储空间并不需要去存储线性表中的每一项记录,特别是系数项为0的项,所以采用办法是只需存储每一项的系数(非0才存储)和相对应的指数即可。在这种解决办法中的线性表有两种存储结构,一种是顺序存储另一种是线性存储,这两中存储结构对于一元多项式来说各有优缺点,其中顺序存储的线性表的最大的优点是支持快速的随机存储,但不利于修改,特别是增加或原创 2014-03-30 17:07:45 · 6201 阅读 · 1 评论 -
单循环链表C++实现
#includeusing namespace std;struct SLNode //节点类{ int data; SLNode * next;};struct SLList{//链表类型 SLNode * pb;//尾指针 size_t size;//元素个数};void InitList(SLList & list)//初始化一个空的单循环链表{ list.原创 2014-03-28 17:17:49 · 5977 阅读 · 0 评论 -
数据结构栈C++简单实现
#includeusing namespace std;const int MAXSIZE = 100;const int ADD = 10;struct stack{ int * base; int * top; int size; int ability;};void IntStack(stack & sta)//初始化{ sta.base = (int *)mal原创 2014-04-15 22:04:54 · 1204 阅读 · 0 评论 -
蚁群算法求解迷宫最优路径问题
本段程序的基本思想是利用蚁群算法中的蚁周模型,来对全局的迷宫图进行信息素的跟新和为每一只蚂蚁选择下一个方格。 一共会进行RcMax = 2000轮模拟(理论上模拟的次数越多结果会越接近真实值),而在每一轮中会排除 M = 10只蚂蚁进行探路。同时在算法的回溯思想上采用的是栈的数据结构来实现的。当栈最终为空时则表示无解。但同时这段程序的一缺点就是:由于我没在算法中对每一轮的每只探路蚂原创 2014-05-04 08:50:18 · 8200 阅读 · 3 评论 -
行编辑程序、括号匹配检验
行编辑程序、括号匹配检验程序都是利用的栈的数据结构。而这两个小程序也非常好的显示了栈先进后出的思想。由于程序本身很简短、清晰,所以也就不做多的解释了,直接上代码了。行编辑程序:#include#includeusing namespace std;int main(){ stack sta; char ch = getchar(); while(ch!=EOF)原创 2014-05-04 09:00:24 · 1344 阅读 · 0 评论 -
C++表达式求值(利用数据结构栈)
唉,刚刚用C++又重新写了一个较完善的表达式求值程序,最后精简后程序还不到100行,这不经让我想到了大一上学期刚学c语言时自己费了好大的劲,写了几百行而且功能还不是很齐全(当时还不能计算有括号的表达式)的简单计算器程序。刚把两个程序对比了一下,感触还是挺深的,同时也再一次体现了数据结构在程序设计中的重要性。以前的那个程序有漏洞而且逻辑复杂,所以就不提了,只说说现在改进后的程序,其思原创 2014-05-04 23:47:55 · 11636 阅读 · 3 评论 -
递归法求解汉罗塔hanoi问题
#includeusing namespace std;//汉罗塔递归求解函数 从a移到cvoid move(int m,char a,char c);void hanoi(int n,char a,char b,char c){ if(1==n) { move(n,a,c); return; } hanoi(n-1,a,c,b); move(n,a,c); hano原创 2014-05-05 17:31:03 · 1368 阅读 · 0 评论 -
算法与数据结构--图的实现、基本操作及应用
#include#include#includeusing namespace std;#define INFINITY DBL_MAX //无穷大#define MAX_VERTEX_NUM 20 //最大顶点个数enum GraphKind //图的类型{ DG,DN,UDG,UDN//有向图、有向网、无向图、无向网};//弧结构typedef struct原创 2014-05-28 16:12:14 · 4234 阅读 · 2 评论