数据结构课程设计

发布 2022-10-01 21:18:28 阅读 4605

东北大学秦皇岛分校电子信息系。

最小生成树问题。

1需求分析。

1)在n个城市间建设通信网络,只需要架设n-1条线路即可。以最低的代价建设这个通信网,即求图的最小生成树。

2)利用克鲁斯卡尔算法求网的最小生成树。

3)利用自定义的队列结构存放连通分量。

4)以文本形式输出最小生成树中的各条边及它们的权值。输出格式为(int a,int b,int n),其中a,b为顶点序号,n为ab边的权;

5)程序运行流程:

1)提示输入顶点数目;

2)接受输入,按照项目要求产生边权值的随机矩阵;然后求解最小生成树;

3)输出最小生成树并且退出;

6)测试数据:9

2概要设计。

1表示边的类定义和接口。

class myarc

public:

int m_beginvex;

int m_endvex;

int m_weight;

myarc(int beginvex,int endvex,int weight);

myarc(){

//重载运算符。

inline bool operator < const myarc& arc)

2用邻接矩阵表示的图类的定义和接口。

class graph

private:

int m_vexnum;

int m_arcnum;

int *m_pmatrix;

public:

~graph();

graph(int vexnum);

graph(int vexnum,int *pmatrix);

void insert(myarc arc);/连通arc 边。

bool bound(int x); 判断顶点x是否已与其它顶点连通。

3自定义队列,用于存放连通图,或按权排列后的边。

class myqueues

public:

list m_list;

myqueues(){

void insert(const myarc& arc); 按权值大小排序插入。

void insertgraph(const graph &graph); 将图的连通分量插入队列。

myarc pop();出队列。

4本程序的结构。

1)主程序模块:

void main()

申明边权值矩阵数组并用随机函数初始化;

创建图;调用克鲁斯卡尔算法函数;

输出边的权值矩阵,最小生成树中的各条边及它们的权值;

退出;2)带权的边类模块---实现带权边的存储和运算。

邻接矩阵类模块---实现图的状态记录和相关操作。

自定义队列类模块---实现边的按权存贮和相关操作。

3)核心kruskal算法模块---用克鲁斯卡尔算法求出最小生成树

各模块调用关系。

3详细设计。

#include

#include<>/产生随机数组用。

#include<> 同上。

#include ""所用到的自定义数据结构定义和实现文件。

using namespace std;

#include

*mystack 堆栈类的结构 [ 0 1 ..curlen ..size] [栈底(bottomprt

#define basesize 64 //默认堆栈数组空间大小(8*8),可以自扩充。

template

class mystack

private:

type *bottom; /元素存放的动态数组

int size,ptr; /堆栈大小和当前栈顶元素索引。

public:

//构造函数。

mystack()

析构函数。~mystack();

//清栈还原。

inline void clear()

//判栈空。

inline bool isempty()

//入栈。int push(type e);

//出栈。int pop(type &e);

//获得栈顶元素。

int top(type &e);

int settop(type e);

// 用callback函数对栈从低向上遍历。

void tr**erse(void callback(type *)type *)

private:

inline int extent()

*mystack的实现 */

*压栈*/template

int mystack::push(type e) /

if(++ptr==size) extent();

bottom[ptr]=e;

return ptr;

*出栈*/template

int mystack::pop(type &e) /

if(ptr==-1)

return -2;//栈空,返回 -2 !

else e=bottom[ptr--]

return ptr;

*获取栈顶元素*/

template

int mystack::top(type &e) /

if(ptr==-1)

return -1;//栈空,返回 -1 !

elsee=bottom[ptr];

return ptr;

*设置栈定元素*/

template

int mystack::settop(type e) /

if(ptr==-1)

return -1;//栈空,返回 -1 !

elsebottom[ptr]=e;

return ptr;

*用callback函数对栈从低向上遍历*/

template

void mystack::tr**erse(void callback(type *)type *e)

if(callback!=null)

*mypoint 坐标结构 */

typedef struct mypoint

int x, y;

*pmypoint;

*表示边的类*/

class myarc

public:

int m_beginvex;

int m_endvex;

int m_weight;

myarc(int beginvex,int endvex,int weight);

myarc(){

bool operator < const myarc& arc)

bool operator ==const myarc& arc)

bool operator > const myarc& arc)

数据结构课程设计

课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 2008 年6月 2日至 2008 年 6月 6 日。目录。1 问题描述 2 1.1 题目内容 2 1.2 基本要求 2 1.3 测试数据 2 2...

数据结构课程设计

数据结构 课程设计。实验报告。学院 信息工程学院。班级 姓名 学号 指导老师 题目2 一元多项式的计算。1 实验目的。1 掌握链表的灵活运用 2 学习链表初始化和建立一个新的链表 3 知道怎样去实现链表删除结点操作与插入结点 4 理解链表的基本操作 包括数据域数据的相加 并能灵活运用。2 实验内容。...

数据结构课程设计

班级 信计 1102 姓名 李娜娜。学号 1108060209 设计日期 2013.07.15 西安科技大学计算机学院 1.实验题目 编制一个演绎扫雷游戏的程序。2.问题描述。做一个n x m的扫雷游戏,每个方格包含两种状态 关闭 closed 和打开 opened 初始化时每个方格都是关闭的,一个...