| 注册
home doc ppt pdf
请输入搜索内容

热门搜索

年终总结个人简历事迹材料租赁合同演讲稿项目管理职场社交

数据结构实验报告

z***u

贡献于2022-09-23

字数:8005




实验报告


课程:数结构
班级:网络工程
学号:
姓名:


















实验1 链表插入删
实验目
1 解单链表循环链表双链表基知识
2 掌握算法思想数结构描述
3 掌握链表插入删相关语句基方法
二 实验步骤求
1实验前准备
a) 解C语言基概念
b) 解C语言基段落
2 机操作
a) 解链表基知识
b) 掌握算法思想数结构描述
c) 掌握链表插入删相关语句基方法
三 实验容
设两头结点单链表头指针分hahb链中数域data链域next两链表数递增序存放现求hb表ha表中ha递增序中ha表中已数hb中hb中数ha中hb链表算法中允许破坏
四 实验结果
1 源代码:
#include
#include

typedef struct LNode{
int data
struct LNode *next
}LNode *LinkList

LinkList CreatList (LinkList &L int n){
int i
LinkList p R
L(LinkList) malloc (sizeof(LNode))
L>nextNULL
RL
printf(请输入d整数(递增序):\nn)
for(ini>0i){
p(LinkList) malloc (sizeof(LNode))
scanf(d&p>data)
R>nextp
Rp
}
p>nextNULL
return L
}

LinkList ConnectList(LinkList & La LinkList & Lb){
LinkList pa pb pc q Lc
LcpcLa
paLa>next
pbLb>next
while(pa&&pb){
if(pa>datadata){
pc>nextpa
pcpa
papa>next
}
else if(pa>data>pb>data){
pc>nextpb
pcpb
pbpb>next
}
else{
pc>nextpa
pcpa
papa>next
qpb>next
free(pb)
pb q
}

}
pc>nextpapapb
free(Lb)
return Lc
}

void print (LinkList & L){
LinkList p
pL>next
printf(链表:\n)
while(p){
printf(d p>data)
pp>next
}
printf(\n)
}

void main (){

int n1 n2
LinkList La Lb Lc

printf(输入创建链表La长度(n1):)
scanf(d&n1)
LaCreatList(Lan1)
printf(La)
print(La)

printf(输入创建链表Lb长度(n2):)
scanf(d&n2)
LbCreatList(Lbn2)
printf(Lb)
print(Lb)

LcConnectList(La Lb)
printf(合Lc)
print(Lc)

}

2 运行界面截图:


五 总结(出现问题解决方案知识点总结)(少100字)
1 链表结尾处处处理(p>nextNULL)需注意链表尾指针空否会指意区域系统会报错
2 链表合程中注意相数域取中外需释放
3 链表操作程中注意指针位置变化




















实验3 二叉树遍历
实验目
1 解二叉树前序中序序列排列
2 C语言二叉树数结构联系起
3 掌握生成二叉树链表结构
4 掌握层次输出二叉树结点
5 掌握动态二叉树转换静态二叉链表
二实验步骤求
1实验前准备
(1)解二叉树基概念
(2)解二叉树基结构
2机操作
(3)解二叉树前序中序序列排列
(4)C语言二叉树数结构联系起
(1) 掌握生成二叉树链表结构
(2) 掌握层次输出二叉树结点
(3) 掌握动态二叉树转换静态二叉链表
三实验容
创建二叉树棵动态二叉树进行分析静态二叉链表表示二叉树动态二叉链表结构中结点三字段:datalchildrchild静态二叉链表数组作存储空间数组元素存储二叉树结点三字段:datalchildrchildlchildrdhild分存储左右孩子标
四实验结果
1 源代码:
#include
#include
typedef struct BiTNode{
char data
struct BiTNode *lchild*rchild
}BiTNode*BiTree

typedef struct ATNode{
char data
int lchild
int rchild
}ATNode

BiTree create (BiTree &T){ 构建二叉树
char ch
scanf(c&ch)
if(ch'#')
TNULL
else{
T(BiTree)malloc(sizeof(BiTNode))
T>datach
create(T>lchild)
create(T>rchild)
}
return T
}

static int length0 初始化二叉树结点数

static char *nodeNULL 定义数组存储节点信息

void preorder(BiTree T){
if(T)
{
printf(c>T>data)
length++
node[length]T>data
preorder(T>lchild)
preorder(T>rchild)
}
}

static ATNode *TarrayNULL 定义结构数组存储二叉树结点信息
static int num11 num21 定义静态变量

void initTarray(BiTree T)
{
if(TNULL)
{
Tarray[num1++]dataT>data
initTarray(T>lchild)
initTarray(T>rchild)
}
}

void transform(BiTree T){
int i
if(T){
if(T>lchildNULL){
i0
while(T>lchild>datanode[i])
i++
Tarray[num2]lchildi
}
if(T>rchildNULL){
i0
while(T>rchild>datanode[i])
i++
Tarray[num2]rchildi
}
num2++
transform(T>lchild)
transform(T>rchild)
}

}


void main (){
BiTree TNULL
printf(输入二叉树节点中值:\n)
create(T)
node(char *)malloc(sizeof(char)*length)
printf(先序次序输出二叉树节点中值:\n)
preorder(T)
printf(\n)
printf(二叉树静态二叉链表:\n)

Tarray(ATNode*)malloc(sizeof(ATNode)*length)
if (TarrayNULL)
{
printf(out of memorypress any key to quit\n)
exit(0)
}

0初始化数组
for(int i1i Tarray[i]dataTarray[i]lchildTarray[i]rchild0

动态二叉树链表转化静态数组
initTarray(T)
transform(T)
printf(标 data lchild rchild\n)
for(int j1j {
printf(2d8c8d8d\n j Tarray[j]data Tarray[j]lchild Tarray[j]rchild)
}
printf(长度:d\nlength)
}

2 运行界面截图:

五 总结(出现问题解决方案知识点总结)(少100字)
1 二叉树创建程中递方法需搞清楚样递生成二叉树
2 二叉树链表转化成静态时需知道双亲结点左右孩子位置应需先节点编序号静态数组存储然先序遍历找结点应左右孩子lchildrchild记住编号空时置0遍历完成静态数组存储
3 关键需弄清楚先序遍历程找应结点左右孩子
实验4 图深度优先搜索
实验目
1 解图定义特点区分图图概念
2 解图数结构搜索方法
3 掌握图邻接矩阵邻接表表示方法
4 写出图深度优先搜索程序
二实验求
1 解图定义特点区分图图概念
2 解图数结构搜索方法
3 掌握图邻接矩阵邻接表表示方法
4 写出图深度优先搜索程序
三实验容
设图Gn点e条边写算法建立G邻接表深度优先搜索输出顶点求该算法时间复杂性O(n+e)邻接表身占空间外O(1)辅助空间

四实验结果
1 源代码:
#include
#include
#include
#include

定义Status值
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW 2
#define NULL 0
#define MAX 20

typedef int Status

typedef struct Node
{
int elem
struct Node *next
}Node*QNode

typedef struct
{
QNode front
QNode rear
}Queue

typedef struct ArcNode 头节点
{
int adjvex 该边指顶点位置
struct ArcNode *nextarc 指条边
}ArcNode

typedef struct VNode 表节点
{
int data 顶点信息
ArcNode *firstarc 指第条附该节点边指针
}VNodeAdjList[MAX]

typedef struct
{
AdjList vertices 表节点
int vexnum 节点数
int arcnum 边条数
}Graph

Status InitQueue(Queue *Q) 初始化队列
{
Q>frontQ>rear(QNode)malloc(sizeof(Node))
if(Q>front)
exit(OVERFLOW)
Q>front>nextNULL
return OK
}

Status EnQueue(Queue *Qint e) 入队
{
QNode p(QNode)malloc(sizeof(Node))
if(p)
exit(OVERFLOW)
p>eleme
p>nextNULL
Q>rear>nextp
Q>rearp
return OK
}

Status DeQueue(Queue *Qint *e) 出队
{
QNode p
pQ>front>next
Q>front>nextp>next
if(Q>rearp)
Q>rearQ>front
*ep>elem
free(p)
return OK
}

Status QueueEmpty(Queue Q) 判断队否空
{
if(QrearQfront)
return TRUE
else
return FALSE
}

int LocateVex(Graph *G int v) 返回节点v图中位置
{
int i
for(i0ivexnum++i)
if(G>vertices[i]datav)
break
else
continue
if(ivexnum)
return i
else
return 1
}

Status CreateGraph(Graph *G)
{
邻接表形式创建连通图G
int m n i j k v1 v2 flag0
ArcNode *p1 *q1 *p *q
printf(Please input the number of VNode)
scanf(d&m)
printf(Please input the number of ArcNode)
scanf(d&n)
G>vexnumm 顶点数目
G>arcnumn 边数目
for(i0ivexnum++i)
{
G>vertices[i]datai+1 顶点信息
G>vertices[i]firstarcNULL
}
输出顶点信息
printf(Output the message of VNode\n)
for(i0ivexnum++i)
printf(vd\nG>vertices[i]data)

for(k0karcnum++k) 输入边两结点值
{
printf(Please input the d edge beginpoint and endpoint k+1)
scanf(dd&v1&v2)
iLocateVex(Gv1)
jLocateVex(Gv2)

if(i>0&&j>0)
{
++flag

p(ArcNode *)malloc(sizeof(ArcNode))
p>adjvexj
p>nextarcNULL
if(G>vertices[i]firstarc)
G>vertices[i]firstarcp
else
{
for(p1G>vertices[i]firstarcp1>nextarcp1p1>nextarc)
p1>nextarcp
}

q(ArcNode *)malloc(sizeof(ArcNode))
q>adjvexi
q>nextarcNULL
if(G>vertices[j]firstarc)
G>vertices[j]firstarcq
else
{
for(q1G>vertices[j]firstarcq1>nextarcq1q1>nextarc)
q1>nextarcq
}
}
else
{
printf(Nothava this edge\n)
kflag
}
}

printf(The Adjacency List is\n) 输出邻接表
for(i0ivexnum++i)
{
printf(\td vd>iG>vertices[i]data)
pG>vertices[i]firstarc
while(p>nextarc)
{
printf(d>p>adjvex)
pp>nextarc
}
printf(d\np>adjvex)
}
return OK
}

int FirstAdjVex(Graph Gint v)
{
返回v第邻接顶点
if(Gvertices[v]firstarc)
return Gvertices[v]firstarc>adjvex
else
return 1
}

int NextAdjVex(Graph Gint vint w)
{
返回v中相w邻接顶点
int flag0
ArcNode *p
pGvertices[v]firstarc
while(p)
{
if(p>adjvexw)
{
flag1
break
}
pp>nextarc
}
if(flag &&p>nextarc)
return p>nextarc>adjvex
else
return 1
}

int Visited[MAX]

void DFS(Graph Gint v)
{
深度优先遍历
int w
Visited[v]TRUE
printf(vd Gvertices[v]data)
for(wFirstAdjVex(Gv)w>0wNextAdjVex(Gvw))
if(Visited[w])
DFS(Gw)
}

void DFSTraverse(Graph G)
{
int v
for(v0v Visited[v]FALSE
for(v0v if(Visited[v])
DFS(Gv) 递
}


void BFSTraverse(Graph G)
{
广度优先遍历
int vv1w
Queue q 定义队列
for(v0v Visited[v]FALSE
InitQueue(&q) 初始化队列
for(v0v if(Visited[v])
{
Visited[v]TRUE
printf(vd Gvertices[v]data)
EnQueue(&qv) 第顶点入队
while(QueueEmpty(q))
{
DeQueue(&q&v1) 第顶点出
for(wFirstAdjVex(Gv1)w>0wNextAdjVex(Gv1w))
if(Visited[w])
{
Visited[w]TRUE
printf(vd Gvertices[w]data)
EnQueue(&qw)
}
}
}
}

void main()
{
Graph G
CreateGraph(&G)
printf(Depth First Search\n)
DFSTraverse(G)
printf(\nBreadth First Search\n)
BFSTraverse(G)
printf(\n)
}

2 运行界面截图:


五 总结(出现问题解决方案知识点总结)(少100字)
1 弄明白邻接链表结构邻接链表存储图原理
2 创建邻接链表程中边创建需两次
3 深度遍历时需静态数组存储节点访问状态访问置1否置0
4 深度遍历时学会递方法
5 文档香网(httpswwwxiangdangnet)户传

《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 2 香币 [ 分享文档获得香币 ]

该文档为用户出售和定价!

购买文档

相关文档

数据结构实验报告《三、串及其应用》

数据结构实验报告- - - - 串及其应用之文学研究助手 专业班级: 电信班 时间:2011年X月X日数据结构实验报告- - - -

文***享 3年前 上传1308   0

数据结构实习报告

数据结构实习报告  一、需求分析1、  程序所实现的功能;2、  程序的输入,包含输入的数据格式和说明;3、  程序的输出,程序输出的形式;4、  测试数据,如果程序输入的数据量比较大,需要给出测试数据;5、  合作人及其分工二、设计说明1、  主要的数据结构设计说明;2、  程序的主要流程图;3、  程序的主要模块,要求对主要流程图中出现的模块进行说明4、  程序的主要函数及其伪代码说明

s***n 8年前 上传1049   0

数据结构试题及答案多套

数据结构试卷(一) 1数据结构试卷(二) 4数据结构试卷(三) 6数据结构试卷(四) 8数据结构试卷(五) 11数据结构试卷(六) 14数据结构试卷(七) 16数据结构试卷(八) 18数据结构试卷(九) 20数据结构试卷(十) 23数据结构试卷(一)参考答案 26数据结构试卷(二)参考答案 27数据结构试卷(三)参考答案 28数据结构试卷(四)参考答案 30数据结构试

文***享 3年前 上传893   0

数据结构练习题及答案

数据结构练习题及答案第1章 绪论一、 判断题1. 数据的逻辑结构与数据元素本身的内容和形式无关。 (√)2. 一个数据结构是由一个逻辑结构和这个逻辑结构上的一个基本运算集构成的整体。 (√)3. 数据元素是数据的最小单位。 (

文***享 3年前 上传1090   0

数据结构试验迷宫问题

数据结构试验——迷宫问题(一)基本问题1.问题描述这是心理学中的一个经典问题。心理学家把一只老鼠从一个无顶盖的大盒子的入口处放入,让老鼠自行找到出口出来。迷宫中设置很多障碍阻止老鼠前行,迷宫唯一的出口处放有一块奶酪,吸引老鼠找到出口。简而言之,迷宫问题是解决从布置了许多障碍的通道中寻找出路的问题。本题设置的迷宫如图1所示。图1 迷宫示意图迷宫四周设为墙;无填充处,为可通处。设每个

文***品 3年前 上传525   0

数据结构实践报告

 数据结构实践报告学 号: 姓 名: 班 级: 班 指导老师: 时 间: 2016-12-21

文***享 1年前 上传595   0

化学实验报告

化学实验报告  化学是一门以实验为基础的学科。化学上的许多理论和定律都是从实验中发现归纳出来的。同时,化学理论的应用、评价也有赖于实验的探索和检验。虽然到了近代乃至现代,化学的飞速进步已经产生了各种新的研究方法,但是,实验方法仍然是化学不可缺少的研究手段。新课程改革将科学探究作为突破口,科学探究不但是一种重要的学习方式,同时也是中学化学课程的重要内容,它对发展学生的科学素养具有不可替代的作用

静***开 11年前 上传1047   0

电路实验报告

实验一 元件特性的示波测量法一、实验目的1、学习用示波器测量正弦信号的相位差。2、学习用示波器测量电压、电流、磁链、电荷等电路的基本变量3、掌握元件特性的示波测量法,加深对元件特性的理解。二、实验任务1、 用直接测量法和李萨如图形法测量移相器的相移即实验原理图如图 5-6示。

小***库 3年前 上传3085   0

上机实验报告

上机实验报告  一.     题目1.  建立一个学生档案,内容包括学号,姓名,年龄,性别,数学,物理和英语3门功课成绩。要求实现以下功能:1)        数据输入;2)        查询某个学生的成绩;3)        按平均排列输出;4)        统计某门课各分数段人数;5)        删除某个学生记录;2.  编程实现对二位数进行加,减,乘运算,每运行一次程序做10道

l***2 8年前 上传867   0

教育实验报告

教育实验报告  教育实验报告  对某种教育现象实验后,要对整个实验过程进行全面总结,提出一个客观的、概括的、能反映全过程及其结果的书面材料,即谓教育实验报告。教育实验报告可分为三部分:①前言。②实验过程和结果。③讨论及结论。实验报告的基本结构:  (1)题目。应以简练、概括、明确的语句反映出教育的对象、领域、方法和问题,使读者一目了然,判断出有无阅读价值。  (2)单位、作者。应

松***布 12年前 上传751   0

**学院实验报告

实验内容:使用金融数据库查找宏观经济及行业相关数据,使用Excel进行作图分析。根据所得数据以及图形分析相关问题。实验目的:掌握金融数据库软件的相关使用,操作,快捷查找数据,能够制作美观图形,对于数据有效分析。

e***3 3年前 上传682   0

生物实验报告

生物实验报告  实验   生物组织中还原糖、脂肪、蛋白质的鉴定  一、实验目的  初步掌握鉴定生物组织中还原糖、脂肪、蛋白质的基本方法。  二、实验原理  1.还原糖的鉴定原理  生物组织中普遍存在的还原糖种类较多,常见的有葡萄糖、果糖、麦芽糖。它们的分子内都含有还原性基团(游离醛基或游离酮基),因此叫做还原糖。蔗糖的分子内没有游离的半缩醛羟基,因此叫做非还原性糖,不具有还原

t***0 9年前 上传829   0

oracle实验报告

《Oracle数据库设计与 实现》 总结报告 成绩:-------------- 学号:-------------- 姓名:---------------- 班级:----

文***品 2年前 上传508   0

CADCAM实验报告

 二叉树的遍历实验一、实验名称:二叉树的遍历实验。二、实验目的:1、掌握CAD/CAM系统中常用的数据结构二叉树的概念、存储结构以及二叉树遍历技术。2、熟练应用C语言编写二叉树的建立,以及用先序、中序、后序遍历方法遍历二叉树的程序。三、实验内容用TC或VC编程,将图2-14所示的二叉树建立链表存储结构,并分别用先序、中序、后序遍历方法遍历该二叉树α1、程序流程图2

知***享 4年前 上传956   0

爱情实验报告

爱情实验报告  爱情实验报告   这学期要做一周的模块实验,我和欣儿分在一组,欣儿是班里的学习委员,负责收缴每天实验后大家必写的实验报告。    欣儿长的很美,碰到人总是浅浅地笑,不象有些女生长得不怎么样却整天想着让人恭维,欣儿每天早早地来,发放实验用品最后一个走。清扫实验垃圾,我当然不遗余力地帮忙欣儿总是冲我一笑道声:“谢谢”,有几次我说道:“欣儿我……”我始终没有勇气把心思表达出

s***e 12年前 上传753   0

科技实验报告

科技实验报告  科技实验报告   一、定义与作用  实验报告,就是在某项科研活动或专业学习中,实验者把实验的目的、方法。步骤、结果等,用简洁的语言写成书面报告。  实验报告必须在科学实验的基础上进行。成功的或失败的实验结果的记载,有利于不断积累研究资料,总结研究成果,提高实验者的观察能力。分析问题和解决问题的能力,培养理论联系实际的学风和实事求是的科学态度。  二、写作要求

j***n 9年前 上传744   0

物理实验报告

物理实验报告  物理 实验报告              指导教师    同组者                     实验日期  2003 年9月21日   实验名称 实验一 测量物质的密度    一、实验目的:  掌握用流体静力称衡法测密度的原理。   了解比重瓶法测密度的特点。   掌握比重瓶的用法。   掌握物理天平的使用方法。   二、实验原理:

相***米 10年前 上传845   0

汇编实验报告

XX大 学 计 算 机 学 院、软 件 学 院实 验 报 告 学号: 姓名:专业:计算机科学与技术 班级: 第X周 课程名称   汇编语言程序设计课程设计(第四次)实验课时30课时实验项目分支与循环结构程序设计实验时间6课时实验目的 1. 掌握分支、循环结构程序设计方法,重点掌握结合程序流程图设计分支、循环结构入、出口的方法;2. 掌握使用DEBUG调试分支

文***品 1年前 上传458   0

GPIO实验报告

通过实验掌握 ARM 芯片使用 GPIO 端口。掌握 GPIO 端口控制 LED 显示。掌握系统时钟的配置。掌握库开发原理及方法。

x***8 3年前 上传1438   0

实验报告格式

实验报告格式实验序号:          实验项目名称:学 号 姓 名 专业、班 实验地点 指导教师 时间 一、实验目的及要求 二、实验设备(环境)及要求 三、实验内容与步骤 四、实验结果与数据处理 五、分析与讨论六、教师评语 签名:日期:成绩本文档由香当网(https://www.x

y***5 11年前 上传786   0

数据结构大作业(含源代码)

数据结构大作业作业题目: 职工信息管理系统 姓 名: 学 号: 班 级: 计算机班 指导教师: 日 期: 2010年X月X日 职工信息管理系统(学院计算机科学

文***享 3年前 上传454   0

数据结构练习题(含答案)

数据结构练习题习题1 绪论1.1 单项选择题1. 数据结构是一门研究非数值计算的程序设计问题中,数据元素的① 、数据信息在计算机中的② 以及一组相关的运算等的课程。 ① A.操作对象   B.计算方法  C.逻辑结构  D.数据映象 ② A.存储结构 B.关系 C.运算 D.算法2. 数据结构DS(Data S

文***享 3年前 上传1519   0

数据结构习题集附答案

数据结构习题集附答案第一章 绪 论一、选择题1.组成数据的基本单位是( )A.数据项 B.数据类型 C.数据元素 D.数据变量2.数据结构是研究数据的( )以及它们之间的相互关系。A.理想结构,物理结构 B.理想结构,抽象结构C.物理结构,逻辑结构 D.抽象结构,逻辑结构3.在数据结构中,从逻辑上可以把数据结构分成( )。A.动态结构和静态结构 B.紧凑结构和非紧凑结构

文***享 3年前 上传864   0

十套数据结构试题及答案

数据结构试卷(一) 1数据结构试卷(二) 4数据结构试卷(三) 6数据结构试卷(四) 8数据结构试卷(五) 11数据结构试卷(六) 14数据结构试卷(七) 16数据结构试卷(八) 18数据结构试卷(九) 20数据结构试卷(十) 23数据结构试卷(一)参考答案 26数据结构试卷(二)参考答案 27数据结构试卷(三)参考答案 28数据结构试卷(四)参考答案 30数据结构试

文***品 3年前 上传652   0

链表排序北邮数据结构实验

数 据 结 构实验报告实验名称:________链表排序___________学生姓名:_____________________班 级:________________班内序号:_________________________学 号:________________日 期:_______________1.实验要求使用链表实现下面各种排序

z***u 1年前 上传262   0