还剩5页未读,继续阅读
文本内容:
数据构造实验报告题目线性表班级网络工程1401班学号1408020106指导教师顶峰日期2016/7/6实验一线性表一实验要求掌握数据构造中线性表的基本概念熟练掌握线性表的基本操作创立、插入、删除、查找、输出、求长度及合并并运算在顺序存储构造撒谎能够的实验熟练掌握链表的各种操作和应用二.实验内容.编程实现在顺序存储的有序表中插入一个元素〔数据类型为整型.编程实现把顺序表中从i个元素开场的k个元素删除〔数据类型为整型三实验过程及步骤源代码#includestdio.h#includemalloc.httdefineLIST_INIT_SIZE100ttdefineLISTINCREMENT10typedefstruct{int*elem;intlength;intlistsize;}SqList;//SqListsq;voidInitList_SqSqList*sq〃初始化列表sq-elem=int*mallocLIST_INIT_SIZE*sizeofint;sq-length=0;sq-listsize=LIST_INIT_SIZE;printf〃申请空间成功!\n〃;voidGetElemSqList*sqinti〃获取第i位置元素的值int*p;p=sq-elem[i-l];printf〃%d〃*p;printf〃\n〃;intListInsert_SqSqList*sqintiinta〃在i位置之前插入aint*p*q;ifi=0||isq-length+lprintf,z—位置不合法—!\n〃;return0;ifsq-length=sq-listsizeint*newbase=int*reallocsq-elemsq-listsize+LISTINCREMENT^sizeofint;ifInewbaseprintf〃申请空间溢出\n〃;return0;sq-elem=newbase;sq-listsize+=LISTINCREMENT;p=sq-elem[i-l];//p指向第i位置的元素q=sq-elem[sq-length-l];//q指向最后一个元素for;q=p;—q*q+l=*q;*p=a;++sq-length;return1;intListDeleteSqSqList*sqinti〃删除i位置上的值int*p*q;ifil||isq-lengthreturn0;p=sq-elem[i-l];//p指向第i位置的元素q=sq-elem+sq-length-l;//q指向最后一个元素for++p;p=q;++p*pT=*p;——sq-length;return1;voidvisitSqList*sq〃输出数据inti=l;for;i=sq-length;i++int*p;p=sq-elem[i-l];printf〃%d〃*p;printf,z〃;voidmain{inti=la=0boo=lnumber=0;SqLists*sq;sq二s;InitListSqsq;printf〃初始化空表\n〃;printf〃输入数据个数:\n〃;scanf〃%d〃fenumber;printf〃输入%1个数据〃,number;printf〃\n〃;for;i=number;i++scanf〃%d〃a;ifboo=ListInsert_SqsqiaprintfCz—插入成功!—\n;elseprintf/z插入不成功,重新插入!\n〃;i=i-l;printf〃输出所有元素\n〃;visitsq;printf〃\n〃;printf〃输出删除的位置:〃;scanf〃%d〃a;ifboo=ListDelete_Sqsqaprintf,z数据删除成功!\n〃;}elseprintf/z没有删除成功\n〃;printf〃输出所有元素\n〃;visitsq;printf〃\n〃;printf〃输出要显示数据的位置〃;scanf〃%d〃a;printf〃输出%d位置数值\n”a;ifa0||asq-length{printf〃--输出位置的数据不存在--\、;elseGetElemsqa;ij步骤.初始化空表.顺序插入数据后输出所有元素.选择删除位置,删除数据后输出所有元素.选择查看的数据位置,输出选择查看的数据四实验结果及分析分析本程序在实现顺序存储插入以及删除i个元素开场的k个元素删除数据类型为整型之外在删除、查看是实时输出结果,并且可以查看希望显示数据的位置数据构造实验报告题目树班级网络工程1401班学号1408020106指导教师顶峰日期2016/7/6实验二树一实验要求掌握二叉树,二叉树排序数的概念和存储方法掌握二叉树的遍历算法熟练掌握编写实现树的各种运算的算法二.实验内容统计一棵二叉树中每种类型节点数度为0/1/2的节点数三实验过程及步骤#includestdio.h#includemalloc.h#includestdlib.htypedefstructBitNode{intdata;structBitNode*lchild*rchild;}BitNode*BitTree;BitTreeBitTreelnit{BitTreeBT;BT=BitNode*mallocsizeofBitNode;BT=NULL;returnBT;BitTreeBitTreeCreatBitTreeBT{intch;printf〃请输入节点的内容输入0时完毕建设!\n〃;scanf〃%d〃ch;ifch=0BT二NULL;else{BT=BitTreemallocsizeofBitNode;BT-data=ch;BitTreeCreatBT-lchild;BitTreeCreatBT-rchild;}returnBT;voidBitTreeEmptyBitTreeBT{ifBT二二NULLprintf树为空!\n〃;elseprintf〃树非空!\n〃;voidPreOrderTraverseBitTreeBT{ifBT!=NULL{printf〃树结点的内容为:%d\n〃BT-data;PreOrderTraverseBT-lchild;PreOrderTraverseBT-rchild;voidInOrderTraverseBitTreeBT{ifBT!=NULL{InOrderTraverseBT-lchild;printf〃树结点的内容为:%d\n〃BT-data;InOrderTraverseBT-rchiId;voidPostOrderTraverseBitTreeBT{ifBT!=NULL{PostOrderTraverseBT-lchild;PostOrderTraverseBT-lchild;printf〃树结点的内容为:%d\n〃BT-data;}intcountBitTreeBT{ifBT=NULLreturn0;elsereturncountBT-lchild+countBT-rchild+l;intBinTreeDepthBitTreeBT{inti=lj=l;ifBT==NULLreturn0;elsei=BinTreeDepthBT-lchild;j=BinTreeDepthBT-rchild;ifijreturni+1;elsereturnj+1;}voidBinTreeClearBitTreeBT{ifBT{ifBT-lchildBinTreeClearBT-lchild;ifBT-rchildBinTreeClearBT-rchiId;freeBT;BT=NULL;main{inti=lj1;BitTreeBT;whilei!=0{printfC欢送使用\n〃;printf〃请选择要进展的操作\n〃;printf〃l.初始化一棵树
2.建设一棵树
3.判断树是否为空\n〃;printf〃
4.按前序遍历树5•按中序遍历树
6.按后序遍历树\n〃;printf〃
7.求树的深度
8.求树的结点数
9.把树清空\n〃;printf〃
0.退出操作界面\n〃;printfC谢谢使用\n〃;scanf〃%d〃,j;switchj{case1:BT=BitTreeInit;printf〃树已经初始化!\n〃;break;case2:BitTreeCreatBT;break;case3:BitTreeEmptyBT;break;case4:PreOrderTraverseBT;break;case5:InOrderTraverseBT;break;case6:PostOrderTraverseBT;break;case7:l=BinTreeDepthBT;printf〃树的深度为:%d\n〃,1;break;case8:l=countBT;printf〃树的结点数为:%d\n〃,1;break;case9:BinTreeClearBT;printf〃树已经清空!\n〃;break;case0:exit0;}}步骤.L选择进展的操作.初始化、建设、判断树是否空、先/中/后序遍历、求深度/结点,清空树.显示结果四实验结果及分析分析本程序不仅可以统计一棵二叉树中每种类型节点数度为0/1/2的节点数〕同时让他有以下功能
1.初始化一棵树
2.建设一棵树
3.判断树是否为空
4.分别按先/中/后序遍历树
5.求树的深度6求树的结点数
7.清空树。