数据结构与算法实验报告文档格式.docx

上传人:b****3 文档编号:16291968 上传时间:2022-11-22 格式:DOCX 页数:11 大小:83.96KB
下载 相关 举报
数据结构与算法实验报告文档格式.docx_第1页
第1页 / 共11页
数据结构与算法实验报告文档格式.docx_第2页
第2页 / 共11页
数据结构与算法实验报告文档格式.docx_第3页
第3页 / 共11页
数据结构与算法实验报告文档格式.docx_第4页
第4页 / 共11页
数据结构与算法实验报告文档格式.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

数据结构与算法实验报告文档格式.docx

《数据结构与算法实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构与算法实验报告文档格式.docx(11页珍藏版)》请在冰豆网上搜索。

数据结构与算法实验报告文档格式.docx

源代码:

#include<

stdio.h>

malloc.h>

#defineLIST_INIT_SIZE100

#defineLISTINCREMENT10

typedefstruct{

int*elem;

intlength;

intlistsize;

}SqList;

//SqListsq;

voidInitList_Sq(SqList*sq)//初始化列表

{

sq->

elem=(int*)malloc(LIST_INIT_SIZE*sizeof(int));

length=0;

listsize=LIST_INIT_SIZE;

printf("

---申请空间成功---!

\n"

);

}

voidGetElem(SqList*sq,inti)//获取第i位置元素的值

{

int*p;

p=&

(sq->

elem[i-1]);

%d"

*p);

intListInsert_Sq(SqList*sq,inti,inta)//在i位置之前插入a

int*p,*q;

if(i<

=0||i>

length+1)

---位置不合法---!

return0;

if(sq->

length>

=sq->

listsize)

int*newbase=(int*)realloc(sq->

elem,(sq->

listsize+LISTINCREMENT)*sizeof(int));

if(!

newbase)

申请空间溢出\n"

elem=newbase;

listsize+=LISTINCREMENT;

//p指向第i位置的元素

q=&

elem[sq->

length-1]);

//q指向最后一个元素

for(;

q>

=p;

--q)*(q+1)=*q;

*p=a;

++sq->

length;

return1;

intListDelete_Sq(SqList*sq,inti)//删除i位置上的值

1||i>

length)return0;

q=sq->

elem+sq->

length-1;

for(++p;

p<

=q;

++p)

*(p-1)=*p;

--sq->

voidvisit(SqList*sq)//输出数据

inti=1;

i<

i++)

elem[i-1];

"

voidmain()

inti=1,a=0,boo=1,number=0;

SqLists,*sq;

sq=&

s;

InitList_Sq(sq);

初始化空表\n"

输入数据个数:

scanf("

&

number);

输入%d个数据:

"

number);

=number;

a);

if(boo=ListInsert_Sq(sq,i,a))

---插入成功!

---\n"

else

---插入不成功,重新插入---!

i=i-1;

输出所有元素\n"

visit(sq);

输出删除的位置:

if(boo=ListDelete_Sq(sq,a))

---数据删除成功!

}else

---没有删除成功---\n"

输出所有元素:

输出要显示数据的位置:

输出%d位置数值\n"

a);

if(a<

0||a>

length)

---输出位置的数据不存在---\n"

GetElem(sq,a);

步骤:

1.初始化空表

2.顺序插入数据后输出所有元素

3.选择删除位置,删除数据后输出所有元素

4.选择查看的数据位置,输出选择查看的数据

四:

实验结果及分析

分析:

本程序在实现顺序存储插入以及删除i个元素开始的k个元素删除(数据类型为整型)。

之外在删除、查看是实时输出结果,并且可以查看希望显示数据的位置。

实验二:

掌握二叉树,二叉树排序数的概念和存储方法。

掌握二叉树的遍历算法。

熟练掌握编写实现树的各种运算的算法。

统计一棵二叉树中每种类型节点数(度为0/1/2的节点数)。

stdlib.h>

typedefstructBitNode{

intdata;

structBitNode*lchild,*rchild;

}BitNode,*BitTree;

BitTreeBitTreeInit(){

BitTreeBT;

BT=(BitNode*)malloc(sizeof(BitNode));

BT=NULL;

returnBT;

}

BitTreeBitTreeCreat(BitTree&

BT){

intch;

printf("

请输入节点的内容,输入0时结束建立!

scanf("

ch);

if(ch==0)

else{

BT=(BitTree)malloc(sizeof(BitNode));

BT->

data=ch;

BitTreeCreat(BT->

lchild);

rchild);

voidBitTreeEmpty(BitTreeBT){

if(BT==NULL)

树为空!

else

树非空!

voidPreOrderTraverse(BitTreeBT){

if(BT!

=NULL){

树结点的内容为:

%d\n"

BT->

data);

PreOrderTraverse(BT->

voidInOrderTraverse(BitTreeBT){

InOrderTraverse(BT->

voidPostOrderTraverse(BitTreeBT){

PostOrderTraverse(BT->

intcount(BitTreeBT){

return0;

return(count(BT->

lchild)+count(BT->

rchild)+1);

intBinTreeDepth(BitTreeBT){

inti=1,j=1;

{

i=BinTreeDepth(BT->

j=BinTreeDepth(BT->

if(i>

j)

return(i+1);

return(j+1);

voidBinTreeClear(BitTree&

if(BT){

if(BT->

lchild)

BinTreeClear(BT->

rchild)

free(BT);

main(){

inti=1,j,l;

while(i!

=0){

-----------------欢迎使用-------------------\n"

请选择要进行的操作\n"

1.初始化一棵树2.建立一棵树3.判断树是否为空\n"

4.按前序遍历树5.按中序遍历树6.按后序遍历树\n"

7.求树的深度8.求树的结点数9.把树清空\n"

0.退出操作界面\n"

-----------------谢谢使用-------------------\n"

j);

switch(j){

case1:

BT=BitTreeInit();

树已经初始化!

break;

case2:

BitTreeCreat(BT);

case3:

BitTreeEmpty(BT);

case4:

PreOrderTraverse(BT);

case5:

InOrderTraverse(BT);

case6:

PostOrderTraverse(BT);

case7:

l=BinTreeDepth(BT);

树的深度为:

l);

case8:

l=count(BT);

树的结点数为:

case9:

BinTreeClear(BT);

树已经清空!

case0:

exit(0);

1.选择进行的操作

2.初始化、建立、判断树是否空、先/中/后序遍历、求深度/结点,清空树

3.显示结果

本程序不仅可以统计一棵二叉树中每种类型节点数(度为0/1/2的节点数)。

同时让他有以下功能:

1.初始化一棵树。

2.建立一棵树。

3.判断树是否为空。

4.分别按先/中/后序遍历树。

5.求树的深度。

6.求树的结点数。

7.清空树。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1