
贺老教我的数据结构-2017.9.7
文章平均质量分 60
byteuler
小天位
这个作者很懒,什么都没留下…
展开
-
排序算法整理(第十五周实践项目)
直接插入排序#include #define MaxSize 20typedef int KeyType; //定义关键字类型typedef char InfoType[10];typedef struct //记录类型{ KeyType key; //关键字项 InfoType data; //其他数据项,类型为I原创 2017-12-07 11:23:40 · 178 阅读 · 0 评论 -
第七周实践项目6 停车场模拟(栈和队列综合)
设停车场是一个可停放n辆汽车的狭长死胡同,南边封口,汽车只能从北边进出(这样的停车场世间少有)。汽车在停车场内按车辆到达时间的先后顺序,最先到达的第一辆车停放在车场的最南端,依次向北排开。若车场内已停满n辆汽车,则后来的汽车只能在门外的候车场上等候,一旦有车开走,则排在候车场上的第一辆车即可开入。当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路(假定停车场内设有供车辆进出的便道,原创 2017-12-13 18:02:22 · 405 阅读 · 0 评论 -
第七周实践项目5 排队看病模拟(队列)
编写一个程序,反映病人到医院看病,排队看医生的情况。在病人排队过程中,主要重复两件事: (1)病人到达诊室,将病历本交给护士,排到等待队列中候诊。 (2)护士从等待队列中取出下一位病人的病历,该病人进入诊室就诊。 要求模拟病人等待就诊这一过程。程序采用菜单方式,其选项及功能说明如下: (1)排队——输入排队病人的病历号,加入到病人排队队列中。 (2)就诊——原创 2017-12-13 18:01:10 · 655 阅读 · 0 评论 -
第七周实践项目4 队列数组
创建10个队列,分别编号为0-9(处理为队列数组,编号即下标)。输入若干个正整数,以数字0作为结束。设输入的值为x,其个位数字的大小为i,则将x插入到编号为i的队列中。最后输出所有的非空队列。 要求将队列处理成链式队列,使用链式队列算法库中定义的数据类型及算法,程序中只包括一个函数(main函数),入队和出队等操作直接在main函数中调用即可。 设程序运行时输入:70 59 9原创 2017-12-13 17:51:10 · 239 阅读 · 0 评论 -
第七周实践项目3 负数把正数赶出队列
/**Copyright (c) 2017,烟台大学计算机与控制工程学院*All rights reserved.*文件名称:项目3-设从键盘输入一整数序列a1,a2,…an,试编程实现:当ai>0时,ai进队,当ai<0时,将队首元素出队,当ai=0时,表示输入结束。要求将队列处理成环形队列,使用算法库中定义的数据类型及算法,程序中只包括一个函数(main函数),入队和出队等操作直接原创 2017-12-13 17:39:52 · 297 阅读 · 0 评论 -
第七周实践项目2.3 顺序环形队列
下图是数据存储结构设计及各种操作实现的要点: /* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目2.3-*作 者:邵雪源 *完成日期:2017年12月13日 *版 本 号:v1.0 */ #include #include #define MaxSize 5typedef c原创 2017-12-13 17:13:01 · 249 阅读 · 0 评论 -
第五周实践项目8 8皇后问题的回溯求解_栈结构
【全文】 回溯法是一种通用的搜索算法,几乎可以用于求解任何可计算的问题。算法的执行过程就像是在迷宫中搜索一条通往出口的路线,总是沿着某一方向向前试探,若能走通,则继续向前进;如果走不通,则要做上标记,换一个方向再继续试探,直到得出问题的解,或者所有的可能都试探过为止。 下面,用经典的8皇后问题为例来讲解如何使用回溯的思想解决问题。 8皇后问题是:在8×8的棋盘上摆放8个皇后,原创 2017-12-13 16:55:47 · 348 阅读 · 0 评论 -
第五周实践项目7 后缀表达式
基于栈结构,将中缀表达式转换为后缀表达式的算法步骤是:初始化运算符栈op;将'='进栈;从exp读取字符ch;while (ch!='\0'){ if (ch不为运算符) 将后续的所有数字均依次存放到postexp中,并以字符'#'标志数值串结束; else switch(Precede(op栈顶运算符,ch))原创 2017-12-13 16:41:58 · 332 阅读 · 0 评论 -
第五周实践项目6 数制转换(栈)
/**Copyright (c) 2017,烟台大学计算机与控制工程学院*All rights reserved.*文件名称:项目6- 把十进制的整数转换为任一进制数输出。 提示:要转换为r进制,则原来的数逐次除以基数r(除完之后用商再除),直到商为0,得到的一系列余数的逆序就是转换结果。 这里的“逆序”,意味着后产生的余数,会先输出,后进先出,栈的机会来了……原创 2017-12-13 16:26:58 · 278 阅读 · 0 评论 -
数据结构课程设计_《旅游景区信息管理系统》
#include #include #include #include #define M 100#define INF 999666333using namespace std; struct Matrix{ string Sname;//景区名称,为了解决哈希冲突 int count;//景点总数量 int edge;//道路数量 int m[M原创 2017-12-21 10:31:43 · 13646 阅读 · 12 评论 -
第四周实践项目8 C++标准模板库与数据结构的学习
贺老的博客c++参考手册STL入门转载 2017-12-13 13:45:11 · 228 阅读 · 0 评论 -
第四周实践项目7 多项式求和
/* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目7- 用单链表存储一元多项式,并实现两个多项式的加法。*作 者:邵雪源 *完成日期:2017年12月13日 *版 本 号:v1.0 */ #include #include #define MAX 20 //多项原创 2017-12-13 13:35:29 · 285 阅读 · 0 评论 -
第四周实践项目6 循环双链表应用
/**Copyright (c) 2017,烟台大学计算机与控制工程学院*All rights reserved.*文件名称:项目6- 设非空线性表ha和hb都用带头节点的循环双链表表示。 设计一个算法Insert(ha,hb,i)。其功能是:i=0时,将线性表hb插入到线性表ha的最前面; 当i>0时,将线性表hb插入到线性表ha中第i个节点的后面; 当i大于等于线性表ha的长度时原创 2017-12-13 13:26:29 · 247 阅读 · 0 评论 -
第四周实践项目5 猴子选大王(循环链表)
/* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目5- 一群猴子,原创 2017-12-13 13:11:14 · 1110 阅读 · 0 评论 -
第四周实践项目4 建立算法库——双链表
/* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目4- 数原创 2017-12-13 13:04:51 · 229 阅读 · 0 评论 -
第四周实践项目3单链表:逆置、连接与递增判断(包含三个程序)
/* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目3- 1、原创 2017-12-13 11:23:29 · 442 阅读 · 0 评论 -
第四周实践项目2 算法库——单链表
/*首先设计测试函数,可以涉及初始化线性表、销毁线性表、输出线性表、插入数据元素对应的函数*/#include #include typedef int ElemType;typedef struct LNode //定义单链表结点类型{ ElemType data; struct LNode *next; //指向后继结点}LinkList;/*原创 2017-12-13 10:59:36 · 277 阅读 · 0 评论 -
第八周实践项目4 字符串加密
/* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目- 一个文本串可用事先编制好的字符映射表进行加密。例如,设字符映射表为:abcdefghijklmnopqrstuvwxyzngzqtcobmuhelkpdawxfyivrsj*作 者:邵雪源 *完成日期:2017年12月14日 *版 本原创 2017-12-13 21:03:38 · 248 阅读 · 0 评论 -
第八周实践项目 5 计数的模式匹配
/* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目- 采用顺序结构存储串,编写一个算法计算指定子串在一个字符串中出现的次数,如果该子串不出现则为0*作 者:邵雪源 *完成日期:2017年12月14日 *版 本 号:v1.0 */ #include #include原创 2017-12-13 21:18:11 · 265 阅读 · 0 评论 -
第八周实践项目10 稀疏矩阵的十字链表表示
#include #include #define M 3 //矩阵行#define N 3 //矩阵列#define Max ((M)>(N)?(M):(N)) //矩阵行列较大者typedef int ElemType;typedef struct mtxn{ int row;原创 2017-12-15 09:39:34 · 489 阅读 · 0 评论 -
第八周实践项目9 算法库——广义表
/**Copyright (c) 2017,烟台大学计算机与控制工程学院*All rights reserved.*文件名称:项目9-*作 者:邵雪源*完成日期:2017年12月14日*版 本 号:v1.0*/#include #include typedef char ElemType;typedef struct lnode{ int tag;原创 2017-12-15 09:38:51 · 289 阅读 · 0 评论 -
第八周实践项目8 稀疏矩阵的三元组表示的实现及应用
#include #define M 6#define N 7#define MaxSize 100 //矩阵中非零元素最多个数typedef int ElemType;typedef struct{ int r; //行号 int c; //列号 ElemType d;原创 2017-12-14 08:13:14 · 331 阅读 · 1 评论 -
第八周实践项目7 对称矩阵的压缩存储及基本运算
/**Copyright (c) 2017,烟台大学计算机与控制工程学院*All rights reserved.*文件名称:项目7-*作 者:邵雪源*完成日期:2017年12月14日*版 本 号:v1.0*/#include #include #define N 4 void Init(int *&b);//为N阶对称矩阵初始化存储数据的一维数组bint Value原创 2017-12-14 08:07:43 · 424 阅读 · 0 评论 -
第八周实践项目6 猴子选大王(数组版)
/**Copyright (c) 2017,烟台大学计算机与控制工程学院*All rights reserved.*文件名称:项目6- 一群猴子,编号是1,2,3 …m,这群猴子(m个)按照1-m的顺序围坐一圈。 从第1只开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,最后一只出圈的猴子为大王。 输入m和n,输出猴子离开圈子的顺序,从中也可以看出最后为大王是几号猴子。*原创 2017-12-14 08:05:35 · 488 阅读 · 0 评论 -
第八周项目实践6 KMP算法(串的模式匹配)
sqString.h#ifndef SqString_H_INCLUDED#define SqString_H_INCLUDED#define MaxSize 100 //最多的字符个数typedef struct{ char data[MaxSize]; //定义可容纳MaxSize个字符的空间 int length;原创 2017-10-19 11:07:56 · 673 阅读 · 0 评论 -
二叉树的非递归遍历
//非递归算法的二叉树 前序、中序、后续查找void preorder1(btnode *b)//前序遍历1 { /*由先序遍历过程可知,先访问根节点,再遍历左子树,最后遍历右子树,由于在二叉链中左右子树是通过根结点的指针域指向的,在访问根节点后后遍历左子树会丢失右子树的节点,需要使用一个栈来临时保存左右子树的地址 由于栈是先进后出的,而先序遍历是先遍历左子树后原创 2017-10-27 19:48:36 · 363 阅读 · 0 评论 -
第十周项目实践1 二叉树算法验证
#ifndef BTREE_H_INCLUDED#define BTREE_H_INCLUDED#define MaxSize 100typedef char ElemType;typedef struct node{ ElemType data; //数据元素 struct node *lchild; //指向左孩子 st原创 2017-11-02 11:24:27 · 238 阅读 · 0 评论 -
第5周实践项目5 迷宫问题(栈和队列实现)
#include #include #define maxsize 100using namespace std;#define M 8#define N 8int mg[M+2][N+2]={ {1,1,1,1,1,1,1,1,1,1}, {1,0,0,1,0,0,0,1,0,1}, {1,0,0,1,0,0,0,1,0,1}, {1,0,0,0,0原创 2017-10-07 11:22:16 · 566 阅读 · 0 评论 -
第4周实践项目1 建立单链表(非多组织结构)
#include #include typedef int ElemType;typedef struct LNode //定义单链表结点类型{ ElemType data; struct LNode *next; //指向后继结点} LinkList;void DestroyList(LinkList *&L) //销毁单链表,之所以把这个销毁原创 2017-09-21 11:05:09 · 266 阅读 · 0 评论 -
第7周项目实践2.1 用只有尾节点指针rear的循环单链表实现队列算法库
//用只有尾节点指针rear的循环单链表作为队列存储结构,其中每个节点的类型为LinkNode,rear指针用于唯一标识链队typedef struct LinkNode{ int date; LinkNode *next;};void initQueue(LinkNode *&rear){ rear=NULL;}void enQueue(LinkNode原创 2017-10-07 18:29:26 · 2599 阅读 · 2 评论 -
第三周项目4顺序表应用2 删除元素在[x,y]之间的所有元素
/* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目4 -删除元素在[x,y]之间的所有元素” *作 者:邵雪源 *完成日期:2017年9月17日 *版 本 号:v1.0 */ #include #include typedef s原创 2017-09-17 19:58:13 · 1123 阅读 · 0 评论 -
第7周实践项目1.1 环形队列中用队尾和队的元素个数来实现队列的算法库
typedef struct { Elemtype date[maxsize]; int front; int count;}sqqueue;void initqueue (sqqueue *&q){ q=(sqqueue*)malloc((sizeof(sqqueue))); q->front=0; q->count=0;}bool e原创 2017-10-07 14:52:18 · 1422 阅读 · 0 评论 -
第7周项目实践 1 队列算法库的建立
sqqueue.cpp#include #include #include "sqqueue.h"void InitQueue(SqQueue *&q) //初始化顺序环形队列{ q=(SqQueue *)malloc (sizeof(SqQueue)); q->front=q->rear=0;}void DestroyQueue(SqQueue *&q) //销原创 2017-10-07 13:51:59 · 188 阅读 · 0 评论 -
第5周实践项目1 顺序栈建立的算法库
main.cpp#include #include "Sqstack.h"int main(){ Elemtype e; SqStack *s; printf("(1)初始化栈s\n"); InitStack(s); printf("(2)栈为%s\n",(StackEmpty(s)?"空":"非空")); printf("(3)依次进栈元素a,b,c,原创 2017-09-28 21:12:55 · 226 阅读 · 0 评论 -
第5周实践项目2 链栈的算法库建立
listack.h#ifndef LISTACK_H_INCLUDED#define LISTACK_H_INCLUDEDtypedef char ElemType;typedef struct linknode{ ElemType data; //数据域 struct linknode *next; //指针域} LiStack原创 2017-09-28 21:26:31 · 224 阅读 · 0 评论 -
第3周实践项目7 删除链表元素最大值
void Deletemax(List *l){ List *p=L->next,*pre=L,*maxp=p,maxpre=L; while(p) { if(maxp->numnum) { maxp=p; maxpre=pre; } pre=p;原创 2017-09-19 16:55:37 · 488 阅读 · 0 评论 -
第3周实践项目5 -顺序表的应用 拆分单链表
/* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称: 拆分单链表 叙述: 拆分单链表,有一个带头节点的单链表L={a1,b1,a2,b2.....an,bn}用算法将其拆分成两个带头节点的单链表L1,L2,要求L1使用L的头节点分析:L1用尾插法表示成a1,a2...anL2用头原创 2017-09-19 15:30:05 · 485 阅读 · 0 评论 -
第3周实践项目1 顺序表的基本运算
/*copyright (t) 2017,烟台大学计算机学院*All rights reserved.*文件名称:1.cpp*作者:邵雪源*完成日期:2017年9月19日*版本号:v1.0*问题描述:用函数实现顺序表的10个基本运算(见下),并用main函数完成调试工作*输入描述:无*程序输出:无*/#include #include #include #define原创 2017-09-19 16:51:43 · 495 阅读 · 0 评论 -
第三周项目4(2)-顺序表应用 将所有奇数移到所有偶数前面
/* copyright (t) 2016,烟台大学计算机学院 *All rights reserved. *文件名称:1.cpp *作者:邵雪源*完成日期:2017年9月19日 *版本号:v1.0 *问题描述:将所在奇数移到所有偶数的前面,要求算法的时间复杂度为O(n),空间复杂度为O(1)。 *输入描述:线性表长度、线性表中各元素 *程序输出:调整顺序后的线性表 */ #原创 2017-09-19 16:18:48 · 1407 阅读 · 0 评论 -
第2周项目1c++语言中函数参数传递的三种方式
#include using namespace std;void myswap1(int *p1,int *p2)//利用指针进行传值,计算机会进行开辟一个形参空间来存储实参地址{ int t; t=*p1; *p1=*p2; *p2=t;}//引用void myswap2(int &x,int &y)//形参和实参共用一个地址空间,形参名是实参的“别名”{ int原创 2017-09-07 14:22:12 · 223 阅读 · 0 评论