1、源代码:#includemalloc.h#define LIST_INIT_SIZE 100#define LISTINCREMENT 10typedef structint * elem;int length;int listsize;SqList;/SqList sq;void InitList_Sq(SqList *sq) /初始化列表sq-elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int);length=0;listsize=LIST_INIT_SIZE;printf(-申请空间成功-!n);void GetElem(SqList *sq,int
2、 i)/获取第i位置元素的值 int *p;p=&(sq-elemi-1);%d,*p);int ListInsert_Sq(SqList *sq,int i,int a)/在i位置之前插入aint *p,*q;if(ilength+1)-位置不合法-!return 0;if(sq-length=sq-listsize)int* newbase=(int *)realloc(sq-elem,(sq-listsize+LISTINCREMENT)*sizeof(int);if(!newbase)申请空间溢出nelem=newbase;listsize+=LISTINCREMENT;/p指向第i位
3、置的元素q=&elemsq-length-1);/q指向最后一个元素for(;q=p;-q) *(q+1)=*q;*p=a;+sq-length;return 1;int ListDelete_Sq(SqList *sq,int i) /删除i位置上的值1|ilength) return 0;q=sq-elem+sq-length-1;for(+p;pvoid visit(SqList *sq)/输出数据int i=1;ii+)elemi-1; void main()int i=1,a=0,boo=1,number=0;SqList s,*sq;sq=&s;InitList_Sq(sq);初始
4、化空表n输入数据个数:scanf(,&number);输入%d个数据:,number);=number;a);if(boo=ListInsert_Sq(sq,i,a)-插入成功!-nelse-插入不成功,重新插入-!i=i-1;输出所有元素nvisit(sq);输出删除的位置:if(boo=ListDelete_Sq(sq,a)-数据删除成功!else-没有删除成功-n输出所有元素:输出要显示数据的位置:输出%d位置数值n,a);if(alength)-输出位置的数据不存在-nGetElem(sq,a);步骤:1.初始化空表2.顺序插入数据后输出所有元素3.选择删除位置,删除数据后输出所有元素
5、4.选择查看的数据位置,输出选择查看的数据四:实验结果及分析分析: 本程序在实现顺序存储插入以及删除i个元素开始的k个元素删除(数据类型为整型)。之外在删除、查看是实时输出结果,并且可以查看希望显示数据的位置。 树 实验二:树 掌握二叉树,二叉树排序数的概念和存储方法。 掌握二叉树的遍历算法。熟练掌握编写实现树的各种运算的算法。 统计一棵二叉树中每种类型节点数(度为0/1/2的节点数)。stdlib.htypedef struct BitNode int data; struct BitNode *lchild,*rchild; BitNode,*BitTree;BitTree BitTree
6、Init() BitTree BT; BT=(BitNode*)malloc(sizeof(BitNode); BT=NULL; return BT; BitTree BitTreeCreat(BitTree &BT) int ch; printf(请输入节点的内容,输入0时结束建立! scanf(ch); if(ch=0) else BT=(BitTree)malloc(sizeof(BitNode); BT-data=ch; BitTreeCreat(BT-lchild);rchild);void BitTreeEmpty(BitTree BT) if(BT=NULL)树为空! else树
7、非空!void PreOrderTraverse(BitTree BT) if(BT!=NULL)树结点的内容为:%dn,BT-data); PreOrderTraverse(BT-void InOrderTraverse(BitTree BT) InOrderTraverse(BT-void PostOrderTraverse(BitTree BT) PostOrderTraverse(BT-int count(BitTree BT) return 0; return(count(BT-lchild)+count(BT-rchild)+1);int BinTreeDepth(BitTree
8、BT) int i=1,j=1; i=BinTreeDepth(BT- j=BinTreeDepth(BT- if(ij) return(i+1); return (j+1);void BinTreeClear(BitTree & if(BT) if(BT-lchild) BinTreeClear(BT-rchild) free(BT);main() int i=1,j,l; while(i!=0)-欢迎使用-n请选择要进行的操作n1.初始化一棵树 2.建立一棵树 3.判断树是否为空n4.按前序遍历树 5.按中序遍历树 6.按后序遍历树n7.求树的深度 8.求树的结点数 9.把树清空n0.退出
9、操作界面n-谢谢使用-nj); switch(j) case 1:BT=BitTreeInit();树已经初始化!break; case 2:BitTreeCreat(BT); case 3:BitTreeEmpty(BT); case 4:PreOrderTraverse(BT); case 5:InOrderTraverse(BT); case 6:PostOrderTraverse(BT); case 7:l=BinTreeDepth(BT);树的深度为:,l); case 8:l=count(BT);树的结点数为: case 9:BinTreeClear(BT);树已经清空! case 0:exit(0);1.选择进行的操作2.初始化、建立、判断树是否空、先/中/后序遍历、求深度/结点,清空树3.显示结果 本程序不仅可以统计一棵二叉树中每种类型节点数(度为0/1/2的节点数)。同时让他有以下功能:1.初始化一棵树。2.建立一棵树。3.判断树是否为空。4.分别按先/中/后序遍历树。5.求树的深度。6.求树的结点数。7.清空树。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1