1、浙江万里学院计算机与信息学院实验报告课程:数据结构 姓名:吴芙蓉专业:计算机 134学号:2013014761实验四:串的操作一、目的和要求了解并掌握串的基本操作二、实验环境C-Free 5.0三、实验内容1建立一棵二叉树,要求用先序非递归方法遍历二叉树。源程序代码:#include #include #include #include #include #include using namespace std; typedef struct BiTNode char data; BiTNode *lchild, *rchild; BiTNode,*BiTree; void CreateBiT
2、ree(BiTree scanf(“%c“, if(ch= ) T=NULL; return; else T=(BiTree)malloc(sizeof(BiTNode); if(!T) exit(1); T-data=ch; CreateBiTree(T-lchild); CreateBiTree(T-rchild); void PreOrderTraverse(BiTree T)/非递归先序遍历 stack Stack; if(!T) printf(“空树!n“); return; while(T | !Stack.empty() while(T) Stack.push(T); print
3、f(“%c“,T-data); T=T-lchild; T=Stack.top(); Stack.pop(); T=T-rchild; main() BiTree T; CreateBiTree(T); PreOrderTraverse(T); printf(“n“); 数据输入与运行结果:2编辑算法,求二叉树中度为 1的结点的个数。源程序代码:#include #include typedef struct BiTNodechar data;struct BiTNode *lchild,*rchild; BiTNode,*BiTree;/定义结点类型BiTree CreateBiTree()
4、/创建树char p;BiTree T;scanf(“%c“,if(p= )T=NULL;elseT=(BiTNode *)malloc(sizeof(BiTNode);/为结点开辟空间T-data=p;T-lchild=CreateBiTree(); /先序创建二叉树T-rchild=CreateBiTree();return (T);int Onechild(BiTree T)/结点度为 1的个数int num1,num2,n=0;if(T=NULL)return(0);elseif(T-lchild=NULLnum1=Onechild(T-lchild);num2=Onechild(T-
5、rchild);return(num1+num2+n);main()BiTree Ta;printf(“按先序序列创建树:n“);Ta=CreateBiTree();printf(“度为 1的数为:%d“,Onechild(Ta);数据输入与运行结果:四、心得体会在这次实验前,我对二叉树的概念还不是特别清楚,但是实验中,由不会到自己学习到编程完成的过程,是我对二叉树的理解和运用都有所提高。树是常用的数据结构。通过实验加深了我对树的遍历的认识,巩固了课本中所学的关于树的基本算法。进行二叉树的遍历的时候,要先理解各种遍历的特点。先序遍历是先遍历根节点,再依次先序遍历左右子树。中序遍历是先中序遍历左子树,再访问根节点,最后中序遍历右子树。而后序遍历则是先依次后续遍历左右子树,再访问根节点。通过这次实验,是我对串的操作更加熟练,也是我知道,在编程中细心耐心的重要。必须要提高自己的编程能力,并勤加练习才能熟能生巧。