数据结构
潇潇雨歇_
www
展开
-
顺序表的一些基本运算
输入代码:/*实验题2-1*/#include #include #define MaxSize 50typedef char ElemType;typedef struct{ ElemType data[MaxSize]; int length;} SqList;//初始化线性表void InitList(SqList *&L){ L=(SqList *)原创 2016-03-23 21:39:15 · 867 阅读 · 0 评论 -
二叉树遍历非递归算法
输入代码:#include #include #define MaxSize 100typedef char ElemType;using namespace std;typedef struct node{ ElemType data; struct node *lchild; struct node *rchild;} BTNode;/*建立二叉树原创 2016-06-06 20:20:45 · 534 阅读 · 0 评论 -
二叉树遍历递归算法
输入代码:#include#include #define MaxSize 100typedef char ElemType;using namespace std;typedef struct node{ ElemType data; //数据元素 struct node *lchild; //指向左孩子节点 struct node *rchild;原创 2016-06-06 20:20:27 · 606 阅读 · 0 评论 -
0-1背包问题(递归解决)
问题剖析: 0-1背包问题规定每个物品要么选,要么不选。因此可以设置物品选择向量为y=[y1,y2,…yn], 那么当yn=1时,y'=[y1, y2, …yn-1],必然为f(n-1, C-wn)的物品选择向量,当yn=0时,必然为f(n-1,C)的最优物品选择向量。所以此时可以考虑动态规划解法。 得到根据上面的分析,我们可以得到如下的递归式: 当wn原创 2016-05-23 17:21:28 · 12700 阅读 · 3 评论 -
背包算法设计(参考学习)
题目要求: 编写一个程序exp5-2.cpp,求解背包问题:设有不同价值、不同重量的物品n件,求从这n件物品中选取一部分物品的方案,使选中物品的总重量不超过指定的限制重量,但选中物品的总价值最大。 算法分析: 1.算法流程图 2.算法设计分析 该问题是求出n组组合中,在背包容量允许的情况下,质量最大,且价值也最大的情况。枚举情况,排除不合理的组合,这里选择递归来原创 2016-05-23 15:39:27 · 1726 阅读 · 0 评论 -
稀疏矩阵构成的广义表
题目要求:假设n n的稀疏矩阵A采用三元组表示,设计一个程序exp6-4.cpp实现如下功能: (1)生成如下两个稀疏矩阵的三元组a和b; (2)输出a转置矩阵的三元组; (3)输出a+b的三元组; (4)输出a b的三元组。输入代码:#include#include#includeusing namespace std;#define M 4//稀原创 2016-06-02 12:23:36 · 875 阅读 · 0 评论 -
KMP算法
KMP算法模式匹配分析: 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。这种算法不太容易理解,网上有很多解释,但读起原创 2016-06-02 11:32:50 · 1170 阅读 · 0 评论 -
BF算法
算法思想解析: BF(Brute Force)算法也就是传说中的“笨办法”,是一个暴力/蛮力算法。设串S和P的长度分别为m,n,则它在最坏情况下的时间复杂度是O(m*n)。BF算法的最坏时间复杂度虽然不好,但它易于理解和编程,在实际应用中,一般还能达到近似于O(m+n)的时间度(最坏情况不是那么容易出现的,RP问题),因此,还在被大量使用。 代码实现:#incl原创 2016-04-21 11:49:06 · 6673 阅读 · 0 评论 -
串的实验---字符串加密
实验要求: 一个文本串可用事先给定的字母映射表进行加密。例如,设字母映射表为:abcdefghijklmnopqrstuvwxyzngzqtcobmuhelkpdawxfyivrsj 则字符串“abc”被加密为“ngz”。设计一个程序exp4-4.cpp将输入的文本串进行加密后输出,然后进行解密并输出。 输入代码:#include#inclu原创 2016-04-20 17:59:50 · 2360 阅读 · 1 评论 -
广义表的各种运算
题目要求:编写一个程序exp6-5.cpp,实现广义表的各种运算,并在此基础上设计一个主程序完成如下功能 1.建立广义表g=“(b,(b,a,(#),d),((a,b),c,((#))))”的链式存储结构; 2.输出广义表g的长度; 3.输出广义表g的深度; 4.输出广义表g的最大原子。 输入代码: #include#include#原创 2016-05-26 14:29:55 · 7174 阅读 · 1 评论 -
二叉树的一些基本功能运算
题目要求: 编写一个程序algo7-1.cpp,实现二叉树的各种运算,并在此基础上设计一个程序exp7-1.cpp完成如下功能(b为如图7.23所示的一棵二叉树): (1)输出二叉树b; (2)输出H节点的左,右孩子节点的值; (3)输出二叉树的深度; (4)输出二叉树的宽度; (5)输出二叉树b的节点个数; (6)输出二叉树b的叶子节点个数; 输入原创 2016-05-26 12:24:50 · 1600 阅读 · 0 评论 -
双链表的各种基本运算
输入代码:#include#includetypedef char ElemType;typedef struct LNode{ ElemType data; struct LNode *prior; struct LNode *next;} LinkList;//建立双链表void CreateListF(LinkList *&L,ElemTyp原创 2016-03-26 12:25:18 · 786 阅读 · 0 评论 -
数据结构第一次上机实践
/*输出正整数1到n的所有素数*/#include#includeusing namespace std;bool Prime(int n){ int k=sqrt(n); for(int i=2; i<k; i++) { if(n%i==0) { return false; }原创 2016-03-14 10:42:40 · 561 阅读 · 0 评论 -
单链表的各种基本运算
输入代码:/*实验题2-2*/#include#includetypedef char ElemType;typedef struct LNode{ ElemType data; struct LNode *next;} LinkList;//使用头插法void CreateListF(LinkList *&L,ElemType a[],int n)原创 2016-03-23 21:42:41 · 3678 阅读 · 0 评论 -
数据结构课程设计
题目要求:设计一个利用哈夫曼算法的编码和译码系统,重复地显示并处理以下项目,直到选择退出为止。具体要求如下:(1)将权值数据存放在数据文件(文件名为data.txt,位于执行程序的当前目录中)(2)初始化:键盘输入字符集大小n、n个字符和n个权值,建立哈夫曼树;(3)编码:利用建好的哈夫曼树生成哈夫曼编码;(4)输出编码;(5)设字符集及频度如下表:字符空格 A B原创 2016-07-10 09:14:37 · 1828 阅读 · 1 评论