- 博客(17)
- 收藏
- 关注
原创 第五周 项目3 - 括号的匹配
【项目 - 括号的匹配】 假设表达式中允许三种括号:圆括号、方括号和大括号。编写一个算法,判断表达式中的各种左括号是否与右括号匹配。 例如,输入2+(3+4)*2+{[3]}-8,输出匹配正确;输入2+(3+4*[2)+{[3]}-8,输出匹配错误。提示: (1)遇到左括号入栈,遇到右括号后,出栈一个符号,看是否配对。若配对,继续,直到读完所有的符号,栈也正好为空。若在中间
2017-09-27 11:07:16 280
原创 第五周 项目2 - 建立链栈算法库
链栈算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:listack.h,包含定义链栈数据结构的代码、宏定义、要实现算法的函数的声明; #ifndef LISTACK_H_INCLUDED#define LISTACK_H_INCLUDEDtypedef char ElemType;typedef struct linknode{ ElemType d
2017-09-27 10:53:51 267
原创 第五周 项目1 - 建立顺序栈算法库
顺序栈算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:sqstack.h,包含定义顺序栈数据结构的代码、宏定义、要实现算法的函数的声明;#ifndef SQSTACK_H_INCLUDED#define SQSTACK_H_INCLUDED#define MaxSize 100typedef char ElemType;typedef struct
2017-09-27 10:13:03 260
原创 第四周 项目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-09-21 11:06:37 439
原创 第四周 项目5- 循环双链表应用
【项目- 循环双链表应用】 设非空线性表ha和hb都用带头节点的循环双链表表示。设计一个算法Insert(ha,hb,i)。其功能是:i=0时,将线性表hb插入到线性表ha的最前面;当i>0时,将线性表hb插入到线性表ha中第i个节点的后面;当i大于等于线性表ha的长度时,将线性表hb插入到线性表ha的最后面。 请在实现算法时,除项目中给出的特殊要求,其余工作均可利用项目4完成的算
2017-09-21 11:04:10 256
原创 第四周 项目4 - 建设双链表算法库
双链表算法库算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:dlinklist.h,包含定义双链表数据结构的代码、宏定义、要实现算法的函数的声明:#ifndef DLINKLIST_H_INCLUDED#define DLINKLIST_H_INCLUDEDtypedef int ElemType;typedef struct DNode
2017-09-21 10:59:45 286
原创 第四周 项目3 - 单链表应用
项目 - 单链表算法】(程序中利用了已经实现的单链表算法,头文件LinkList.h及其中函数的实现见单链表算法库) 1、设计一个算法,将一个带头结点的数据域依次为a1,a2,…,an(n≥3)的单链表的所有结点逆置,即第一个结点的数据域变为an,…,最后一个结点的数据域为a1。实现这个算法,并完成测试。 [参考解答] (程序中利用了已经实现的单链表算法,头文件LinkLis
2017-09-21 10:47:22 268
原创 第四周 项目2 - 建设“单链表”算法库
按照“0207将算法变程序”部分建议的方法,建设自己的专业基础设施算法库。这一周,建的是单链表的算法库。 算法库包括两个文件: 头文件:linklist.h,包含定义顺序表数据结构的代码、宏定义、要实现算法的函数的声明; 源文件:linklist.cpp,包含实现各种算法的函数的定义 请采用程序的多文件组织形式,建立如上的两个文件,另外再建立一个源文件
2017-09-21 10:36:15 223
原创 第四周 项目1 建立单链表
定义单链表存储结构,用头插法和尾插法建立单链表,并显示建立好以后的结果。 请在下面代码的基础上开展工作:#include #include typedef int ElemType;typedef struct LNode //定义单链表结点类型{ ElemType data; struct LNode *next; //指向后继结点}
2017-09-21 10:33:47 272
原创 第三周 项目4 顺序表应用
【项目 - 顺序表应用】 定义一个采用顺序结构存储的线性表,设计算法完成下面的工作: 1、删除元素在[x, y]之间的所有元素,要求算法的时间复杂度为O(n),空间复杂度为O(1); 2、将所在奇数移到所有偶数的前面,要求算法的时间复杂度为O(n),空间复杂度为O(1)。提示: (1)充分利用前面建立的算法库解决建立顺序表、输出线性表的问题; (2)为保证复杂度的要
2017-09-20 11:00:12 689
原创 第三周 项目3 求集合并集
假设有两个集合 A 和 B 分别用两个线性表 LA 和 LB 表示,即线性表中的数据元素即为集合中的成员。设计算法,用函数unionList(List LA, List LB, List &LC )函数实现该算法,求一个新的集合C=A∪B,即将两个集合的并集放在线性表LC中。提示: (1)除了实现unnionList函数外,还需要在main函数中设计代码,调用unionList进行
2017-09-20 10:53:51 356
原创 第三周 项目2 - 建设“顺序表”算法库
学习《数据结构》课程的过程中,同步开展实践。对每一种逻辑结构,实现其各种存储结构下的基本运算,是一项基础性的工作。 本文为算法库中的第一个,针对线性表中的顺序存储结构,实现各种基本运算。 算法库包括两个文件: 头文件:list.h,包含定义顺序表数据结构的代码、宏定义、要实现算法的函数的声明; 源文件:list.cpp,包含实现各种算法的函数的定义 l
2017-09-15 15:40:19 341
原创 第三周 项目1 - 顺序表的基本运算
在数据结构的学习中,掌握基本运算是一个基础性的工作。这种“抽象”级别的成果,适用于各种应用场合,也是训练计算思维的根本依托之一。 在实践性的学习路线中,实践可以分为三个层次:验证性、设计性和综合性。验证性实验是最初步和基本的的,通过验证课堂讲的、书上写的内容,加深对相关知识的理解;设计性实验锻炼的是运用某些基本知识和原理解决问题的能力;而综合性实验则达到综合运用多方面的知识,解决实际问题的
2017-09-15 14:56:18 653
原创 第二周 项目3—汉诺塔
#include #define discCount 4long move(int, char, char,char);int main(){ long count; count=move(discCount,'A','B','C'); printf("%d个盘子需要移动%ld次\n", discCount, count); return 0;}lon
2017-09-14 11:12:08 145
原创 第二周 项目2 - 程序的多文件组织
学习数据结构,目标就是要编制出有相当规模的程序的。将所有的代码放在一个文件中的做法,不能适用现阶段的需求了。 通过这个项目,确认有能力用多文件组织程序。方便以后各章,我们就某一数据结构定义算法库,并能引用算法库进行实践。 最简单的多文件组织,一个项目中有3个文件: (1) .h 头文件:定义数据类型、声明自定义函数、定义宏等 (2).cpp 源文件1:用于实现头文件
2017-09-14 10:53:27 195
原创 第二周 项目1—C/C++语言中函数参数传递的三种方式
主函数main():int main(){ int a, b; printf("请输入待交换的两个整数:"); scanf("%d %d", &a, &b); __________________; //分三个程序,分别写上调用myswap的合适形式 printf("调用交换函数后的结果是:%d 和 %d\n", a, b); return
2017-09-14 10:43:52 225
原创 第二周项目三-体验复杂度
经典排序法:/* *Copyright (c) 2017, 烟台大学计算机学院 *All rights reserved. *文件名称:天尊.cpp *作 者:无量天尊 *完成日期:2017年9月13日 *版 本 号:v1.0 * *问题描述:使用两种不同的算法对十万条数据进行排序 *输入描述:含有十万条数据的文档 *程序输出:见程序运行截屏
2017-09-13 20:49:56 159
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人