自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 数据结构课程设计

代码head.h#ifndef HEAD_H_INCLUDED#define HEAD_H_INCLUDED# pragma once#include#include#include#include#define INFINITY 10000 /*图的矩阵中A(i,i)记为0,若没有通路,记为infinity = 10000。*/#define MA

2017-12-21 15:45:46 1170 1

原创 数据结构期末总结

转眼间一学期的时间已悄然而过,我们跟随贺老学习了一个学期的数据结构,从一开始的新奇和不适应到慢慢习惯,掌握贺老的上课节奏和上课方式,我们一直在成长。  贺老一直坚持翻转课堂的形式带领我们学习,在课前会将录好的视频上传到蓝墨云班课供大家学习,到上课时讲解重点和难点,同学们分组面对面而座,上课有问题便可以小组讨论。这种学习方式要求大家有很强的自控能力,但习惯了传统教学的方式后,总感觉还学的不够扎实

2017-12-17 21:06:32 262

原创 第10周项目2 用二叉树求解代数表达式

用二叉树来表示代数表达式,树的每一个分支节点代表一个运算符,每一个叶子节点代表一个运算数(为简化,只支持二目运算的+、-、*、/,不加括号,运算数也只是一位的数字字符。本项目只考虑输入合乎以上规则的情况)。请设计算法,(1)根据形如“1+2∗3−4/5”的字符串代表的表达式,构造出对应的二叉树(如图),用后序遍历的思路计算表达式的值时,能体现出先乘除后加减的规则;(2)对构造出的二叉树,计算出表达

2017-11-16 11:27:10 228

原创 第10周项目1(4)哈夫曼编码的算法验证

代码:#include #include #define N 50 //叶子结点数 #define M 2*N-1 //树中结点总数 //哈夫曼树的节点结构类型 typedef struct { char data; //结点值 double weight; //权重 int parent;

2017-11-16 11:16:34 240

原创 第10周项目1(3)中序线索化二叉树的算法验证

代码:#include #include #define MaxSize 100 typedef char ElemType; typedef struct node { ElemType data; int ltag,rtag; //增加的线索标记 struct node *lchild; struct

2017-11-16 11:10:05 185

原创 第10周项目1(2)二叉树构造算法的验证

1.由先序序列和中序序列构造二叉树定理:任何n(n≥0)个不同节点的二叉树,都可由它的中序序列和先序序列唯一地确定。证明(数学归纳法) 基础:当n=0时,二叉树为空,结论正确。假设:设节点数小于n的任何二叉树,都可以由其先序序列和中序序列唯一地确定。归纳:已知某棵二叉树具有n(n>0)个不同节点,其先序序列是a0a1…an−1;中序序列是b0b1…bk−1bkbk+1…bn−1。先序遍历“

2017-11-16 11:00:33 222

原创 第10周项目1 (1)层次遍历算法的验证

【二叉树的层次遍历算法】   实现二叉树的层次遍历算法,并对用”A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))”创建的二叉树进行测试btree.h#ifndef BTREE_H_INCLUDED#define BTREE_H_INCLUDED#define MaxSize 100typedef char ElemType;typedef struc

2017-11-09 11:16:00 162

原创 第9周项目3 利用二叉树遍历思想解决问题(2)

#include #include "btree.h" int Like(BTNode *b1,BTNode *b2) //判断二叉树b1和b2是否相似 { int like1,like2; if (b1==NULL && b2==NULL) //如果两二叉树都为空,相似 return 1; else if (b1

2017-10-31 22:20:41 195

原创 第9周项目3 利用二叉树遍历思想解决问题(1)

#include #include "btree.h" int Nodes(BTNode *b) //计算二叉树节点个数 { if (b==NULL) return 0; else return Nodes(b->lchild)+Nodes(b->rchild)+1; } void DispLeaf(BT

2017-10-31 22:18:05 234

原创 第9周项目2 二叉树遍历的递归算法

实现二叉树的先序、中序、后序遍历的递归算法,并对用”A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))”创建的二叉树进行测试。 代码:main.cpp#include #include "btree.h" void PreOrder(BTNode *b) //先序遍历的递归算法 { if (b!=NULL) {

2017-10-26 11:01:36 247

原创 第9周项目1 二叉树算法库

要求:   1、头文件btree.h中定义数据结构并声明用于完成基本运算的函数。对应基本运算的函数包括:void CreateBTNode(BTNode *&b,char *str); //由str串创建二叉链BTNode *FindNode(BTNode *b,ElemType x); //返回data域为x的节点指针BTNode *LchildNode(BTN

2017-10-26 10:24:30 338

原创 第8周项目4(2) 稀疏矩阵的三元组表示的实现及应用

稀疏矩阵相加采用三元组存储稀疏矩阵,设计两个稀疏矩阵相加的运算算法 提示1:两个行数、列数相同的矩阵可以相加 提示2:充分利用已经建立好的算法库解决问题代码:头文件tup.h#ifndef TUP_H_INCLUDED #define TUP_H_INCLUDED #define M 6 #define N 7 #define MaxSize 100

2017-10-24 22:29:41 227

原创 第8周项目4(1) 稀疏矩阵的三元组表示的实现及应用

稀疏矩阵的三元组表示代码:1.头文件:tup.h,包含定义稀疏矩阵的三元组表示数据结构的代码、宏定义、要实现算法的函数的声明#ifndef TUP_H_INCLUDED#define TUP_H_INCLUDED#define M 6#define N 7#define MaxSize 100 //矩阵中非零元素最多个数typedef int Elem

2017-10-24 22:22:13 251

原创 第8周项目3(3)

写出对上、下三角矩阵、对角矩阵的压缩存储结构,以及相关的基本运算的实现 代码:#include #include #define N 4 #define M 10 void Init(int *&b) { b = (int*)malloc(sizeof(int)*(N*(N+1)/2)); } //返回存储在b[M]中,对应二维数组A[

2017-10-24 22:15:46 168

原创 第8周项目3(2) 压缩存储的对称矩阵的运算

设计算法,实现两个用压缩形式存储的对称矩阵A和B的加法和乘法。实现中请使用好前面设计的基本运算。代码:#include #define N 4#define M 10int value(int a[],int i,int j){ if (i>=j) return a[(i*(i+1))/2+j]; else return a[(j*(

2017-10-24 22:10:31 196

原创 第8周项目3(1)对称矩阵压缩存储的实现与应用

void Init(int *&b);//为N阶对称矩阵初始化存储数据的一维数组bint Value(int b[], int i, int j);//返回存储在b[M]中,对应二维数组A[i][j]的值void Assign(int b[], int e, int i, int j);//将e赋值给对应二维数组元素A[i][j],要存储到b[M]中void Disp(int b[]);//

2017-10-24 21:41:54 243

原创 第8周项目2 顺序串算法

采用顺序存储方式存储串,实现下列算法并测试: (1)试编写算法实现将字符串S中所有值为c1的字符换成值为c2的字符: void Trans(SqString *&s, char c1, char c2); (2)试编写算法,实现将已知字符串所有字符倒过来重新排列。如ABCDEF改为FEDCBA。 void Invert(SqString &s) (3)从串s中删除其值等于c的所

2017-10-24 21:34:10 444

原创 第8周项目1 建立顺序串的算法库

代码:1.头文件:sqString.h,包含定义顺序串数据结构的代码、宏定义、要实现算法的函数的声明#ifndef SqString_H_INCLUDED#define SqString_H_INCLUDED#define MaxSize 100 //最多的字符个数typedef struct{ char data[MaxSize];

2017-10-24 20:35:32 198

原创 第7周项目6 停车场模拟

设停车场是一个可停放n辆汽车的狭长死胡同,南边封口,汽车只能从北边进出(这样的停车场世间少有)。汽车在停车场内按车辆到达时间的先后顺序,最先到达的第一辆车停放在车场的最南端,依次向北排开。若车场内已停满n辆汽车,则后来的汽车只能在门外的候车场上等候,一旦有车开走,则排在候车场上的第一辆车即可开入。当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路(假定停车场内设有供车辆进出的便道,

2017-10-18 21:57:21 210

原创 第7周项目5 排队看病模拟

编写一个程序,反映病人到医院看病,排队看医生的情况。在病人排队过程中,主要重复两件事: (1)病人到达诊室,将病历本交给护士,排到等待队列中候诊。 (2)护士从等待队列中取出下一位病人的病历,该病人进入诊室就诊。 要求模拟病人等待就诊这一过程。程序采用菜单方式,其选项及功能说明如下: (1)排队——输入排队病人的病历号,加入到病人排队队列中。 (2)就诊——病人排队队列中最前面

2017-10-18 21:48:00 447

原创 第7周项目4 队列数组

创建10个队列,分别编号为0-9(处理为队列数组,编号即下标)。输入若干个正整数,以数字0作为结束。设输入的值为x,其个位数字的大小为i,则将x插入到编号为i的队列中。最后输出所有的非空队列。  要求将队列处理成链式队列,使用链式队列算法库中定义的数据类型及算法,程序中只包括一个函数(main函数),入队和出队等操作直接在main函数中调用即可。  设程序运行时输入:70 59 9

2017-10-18 21:23:09 166

原创 第7周项目3 负数把正数赶出队列

设从键盘输入一整数序列a1,a2,…an,试编程实现:当ai>0时,ai进队,当ai代码:头文件:sqqueue.h,包含定义顺序环形队列数据结构的代码、宏定义、要实现算法的函数的声明#ifndef SQQUEUE_H_INCLUDED#define SQQUEUE_H_INCLUDED#define MaxSize 5typedef int ElemType;typed

2017-10-12 11:09:55 295

原创 第7周项目2 建立链队算法库

代码:头文件:liqueue.h,包含定义链队数据结构的代码、宏定义、要实现算法的函数的声明#ifndef LIQUEUE_H_INCLUDED#define LIQUEUE_H_INCLUDEDtypedef char ElemType;typedef struct qnode{ ElemType data; struct qnode *next;} QNod

2017-10-12 10:58:46 143

原创 第7周项目1 建立顺序环形队列算法库

数据存储结构设计及各种操作实现的要点: 代码:头文件:sqqueue.h,包含定义顺序环形队列数据结构的代码、宏定义、要实现算法的函数的声明

2017-10-12 10:42:27 174

原创 第5周项目3 括号的匹配

假设表达式中允许三种括号:圆括号、方括号和大括号。编写一个算法,判断表达式中的各种左括号是否与右括号匹配。 例如,输入2+(3+4)*[2+{[3]}]-8,输出匹配正确;输入2+(3+4*[2)+{[3]}-8,输出匹配错误。提示:(1)遇到左括号入栈,遇到右括号后,出栈一个符号,看是否配对。若配对,继续,直到读完所有的符号,栈也正好为空。若在中间出现一个不配对的,或者_________

2017-10-12 10:27:01 257

原创 第5周项目2 建立链栈算法库

定义链栈存储结构,实现其基本运算,并完成测试头文件:listack.h,包含定义链栈数据结构的代码、宏定义、要实现算法的函数的声明#ifndef LISTACK_H_INCLUDED#define LISTACK_H_INCLUDEDtypedef char ElemType;typedef struct linknode{ ElemType data;

2017-10-11 23:19:21 215

原创 第5周项目1 建立顺序栈算法库

定义顺序栈存储结构,实现其基本运算,并完成测试。 头文件:sqstack.h,包含定义顺序栈数据结构的代码、宏定义、要实现算法的函数的声明#ifndef SQSTACK_H_INCLUDED#define SQSTACK_H_INCLUDED#define MaxSize 100typedef char ElemType;typedef struct{ ElemTy

2017-10-11 22:48:38 220

原创 第4周项目6 多项式求和

提示: 1、存储多项式的数据结构   多项式的通式是pn(x)=anxn+an−1xn−1+...+a1x+a0。n次多项式共有n+1项。直观地,可以定义一个数组来存储这n+1个系数。以多项式p(x)=−3.4x10−9.6x8+7.2x2+x为例,存储这个多项式的数组如下图:    可以看出,这种方案适合对某些多项式的处理。但是,在处理一些次数高但项数少的多项式时,存在浪费空间的

2017-10-11 22:41:31 190

原创 第4周项目5(2) 循环双链表应用

设非空线性表ha和hb都用带头节点的循环双链表表示。设计一个算法Insert(ha,hb,i)。其功能是:i=0时,将线性表hb插入到线性表ha的最前面;当i>0时,将线性表hb插入到线性表ha中第i个节点的后面;当i大于等于线性表ha的长度时,将线性表hb插入到线性表ha的最后面。 代码:main.cpp#include #include #include "cdlinkli

2017-10-11 22:32:37 342

原创 第4周项目5(1) 猴子选大王

一群猴子,编号是1,2,3 …m,这群猴子(m个)按照1-m的顺序围坐一圈。从第1只开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。输入m和n,输出为大王的猴子是几号。提示: (1)链表解法:可以用一个循环单链表来表示这一群猴子。表示结点的结构体中有两个成员:一个保存猴子的编号,一个为指向下一个人的指针,编号为m的结点再指向编号为

2017-10-11 22:22:26 212

原创 第4周项目4 建设双链表算法库

dlinklist.h

2017-10-11 22:11:21 141

原创 第4周项目3 单链表应用

1、设计一个算法,将一个带头结点的数据域依次为a1,a2,…,an(n≥3)的单链表的所有结点逆置,即第一个结点的数据域变为an,…,最后一个结点的数据域为a1。实现这个算法,并完成测试。linklist.h[cpp] view plain copy print?#ifndef LINKLIST_H_INCLUDED #define LINKLIST_H_INCLUDED #

2017-10-11 18:54:40 283

原创 第4周项目2 建立“单链表”算法库

/*  *Copyright (c) 2017,烟台大学计算机与控制工程学院  *All rights reserved.  *文件名称:项目2——建立单链表算法库  *作    者:冯圆  *版 本 号:v1.0  *  按照“0207将算法变程序”部分建议的方法,建设自己的专业基础设施算法库。这一周,建的是单链表的算法库。     算法库包括两个文件:

2017-09-27 11:41:37 184

原创 第4周项目1 建立单链表

/* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目1——建立单链表 *作 者:冯圆 *版 本 号:v1.0 * 定义单链表存储结构,用头插法和尾插法建立单链表,并显示建立好以后的结果。 */ 代码:#include #include ty

2017-09-27 11:24:28 230

原创 第3周项目4 顺序表应用

/* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目4——顺序表的应用 *作 者:冯圆 *版 本 号:v1.0 *  定义一个采用顺序结构存储的线性表,设计算法完成下面的工作:   1、删除元素在[x, y]之间的所有元素,要求算法的时间复杂度为O(n),空间复杂度为O(1);

2017-09-19 20:19:44 253

原创 第3周项目3 求集合并集

/* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目3——求集合并集 *作 者:冯圆 *版 本 号:v1.0 *  假设有两个集合 A 和 B 分别用两个线性表 LA 和 LB 表示, 即线性表中的数据元素即为集合中的成员。设计算法, 用函数unionList(

2017-09-19 20:15:11 1740

原创 第3周项目2 建设“顺序表”算法库

/* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目2 - 建设“顺序表”算法库 *作 者:冯圆 *版 本 号:v1.0 *  问题描述:领会“0207将算法变程序”部分建议的方法,建设自己的专业基础设施算法库。这一周,建的是顺序表的算法库。 */

2017-09-19 19:53:55 330

原创 第3周项目1 顺序表的基本运算

/* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目1 - 顺序表的基本运算 *作 者:冯圆 *版 本 号:v1.0 *  问题描述:实现顺序表基本运算有算法, 依据“最小化”的原则进行测试。 所谓最

2017-09-19 19:38:25 343

原创 第2周项目3 ——汉诺塔程序

/* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称: *作 者:冯圆 *版 本 号:v1.0 *  用递归算法求解汉诺塔问题,其复杂度可以求得为O(2n), 是指数级的算法。请到课程主页下载程序运行一下, 体验盘子数discCount为4、8、16、20、24时在

2017-09-13 14:28:38 249

原创 第2周项目3 复杂度体验

/* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称: *作 者:冯圆 *版 本 号:v1.0 * (1)两种排序算法的运行时间   排序是计算机科学中的一个基本问题,产生了很多种适合不同情况下适用的算法, 也一直作为算法研究的热点。本项目提供两种排序算法,复杂度为O(n2

2017-09-13 00:19:24 182

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除