欢迎来到一句话经典语录网
我要投稿 投诉建议
当前位置:一句话经典语录 > 心得体会 > 二叉树程序的实验报告心得体会

二叉树程序的实验报告心得体会

时间:2019-10-03 00:03

实验五 二叉树基本操作的编程实现实验报告

\\\/\\\/---------------------------------------------------------------------------#include using namespace std;typedef struct node{ struct node *L,*R; string name;}NODE;int count =0; \\\/\\\/计数\\\/\\\/输入void Input(NODE **T,int num){ string name; int L,R; *T = new NODE[num]; for (int i=0;i> name >> L >> R; if(L >=num || R >=num) { cout << 输入结点序号非法,请重新输入<name = name; (*T+i)->L = L==-1? NULL:*T+L; (*T+i)->R = R==-1? NULL:*T+R; i++; }}\\\/\\\/前序void NLR(NODE *T){ if(T==NULL)return ; count++; cout <name<< ; NLR(T->L); NLR(T->R);}int main(){ NODE *T=NULL,t; int num; cout << 输入结点数:<> num; Input(&T,num); cout <<前序:; NLR(T); cout << endl; cout << 总结点数:<< count << endl; system(PAUSE); return 0;}

二叉树基本操作实验

楼主你好具体代码如下:#include #include #define MAX 40 typedef struct node\\\/\\\/二叉树结点定义 { char data; struct node *lChild;\\\/\\\/左孩子 struct node *rChild;\\\/\\\/右孩子 }BTNode; \\\/\\\/*************************************二叉树操作*************************************** void Initial_BT(BTNode * &b) { b=NULL; } void Creat_BT(BTNode * &b)\\\/\\\/创建二叉树 { BTNode *St[MAX];\\\/\\\/用栈辅助实现二叉树的建立 BTNode *p=NULL; b=NULL; int top=-1;\\\/\\\/栈指针 int k;\\\/\\\/k为左右孩子标示(1为左孩子、2为右孩子) char ch; printf(Enter the binary tree:\\\ ); ch=getchar(); while(ch!='\\\ ') { switch(ch) { case '(':\\\/\\\/左孩子 top++; St[top]=p; k=1; break; case ')': top--; break; case ',':\\\/\\\/右孩子 k=2; break; default: p=(BTNode *)malloc(sizeof(BTNode)); p->data=ch; p->lChild=p->rChild=NULL; if(!b)\\\/\\\/如果为根节点 b=p; else { switch(k) { case 1: St[top]->lChild=p; break; case 2: St[top]->rChild=p; break; } } } ch=getchar();\\\/\\\/继续读入数据 } }void InOrder(BTNode *b)\\\/\\\/中序遍历 { if(b) { InOrder(b->lChild); printf(%c,b->data); InOrder(b->rChild); } } void PostOrder(BTNode *b)\\\/\\\/后序遍历 { if(b) { PostOrder(b->lChild); PostOrder(b->rChild); printf(%c,b->data); } } int Leaf_Sum(BTNode *b) { if(!b) return 0; else if(b->lChild == NULL && b->rChild == NULL) return 1; else return Leaf_Sum(b->lChild)+Leaf_Sum(b->rChild); } void Start() { BTNode *b;\\\/\\\/二叉树 char choice; b=(BTNode *)malloc(sizeof(BTNode)); Initial_BT(b); GOTO:system(cls); printf(\\\\\\1.创建二叉树.\\\ \\\\\\2.中序遍历.\\\ \\\\\\3.后序遍历.\\\ \\\\\\4.叶子结点个数.\\\ \\\\\\5.退出.\\\ ); printf(输入你的选择:); GOTO1:choice=getchar(); switch(choice) { case '1': getchar(); Creat_BT(b); system(pause); goto GOTO; case '2': InOrder(b); printf(\\\ ); system(pause); getchar(); goto GOTO; case '3': PostOrder(b); printf(\\\ ); system(pause); getchar(); goto GOTO; case '4': printf(共有%d个叶子结点\\\ ,Leaf_Sum(b)); system(pause); getchar(); goto GOTO; case '5': system(pause); break; default: printf(输入错误!\\\ 重新输入:); goto GOTO1; } } int main() { Start(); return 0; }希望能帮助你哈

数据结构实验报告: 查找 排序 图的存储与遍历 二叉树的存储与遍历

1、建立一个单链表,并从屏幕显示单链表元素列表。

2、从键盘输入一个数,查找在以上创建的单链表中是否存在该数;如果存在,显示它的位置;如果不存在,给出相应提示。

3、在上述的单链表中的指定位置插入指定的元素 4、删除上述单链表中指定位置的元素。

源程序:头文件 #include #include typedef char ElemType; typedef int Status; #define OK 1 #define ERROR 0 typedef struct LNode{ ElemType data; LNode *next; }LNode,*LinkList; void about(){ \\\/\\\/版本信息 cout<<单链表的操作 } void showmenu(){ \\\/\\\/功能列表 cout<next; \\\/\\\/从头结点开始扫描 while(p){ \\\/\\\/顺指针向后扫描,直到p->next为NULL或i=j为止 cout<data; p=p->next; } cout<next = NULL; \\\/\\\/ 先建立一个带头结点的单链表 cout<<逆序输入 n 个数据元素,建立带头结点的单链表< 0; --i) { p = new LNode; cin>>p->data; \\\/\\\/ 输入元素值 p->next = L->next; L->next = p; \\\/\\\/ 插入 } } \\\/\\\/ L是带头结点的链表的头指针,以 e 返回第 i 个元素 Status GetElem_L(LinkList L, int i, ElemType &e) { int j; LinkList p; p = L->next; j = 1; \\\/\\\/ p指向第一个结点,j为计数器 while (p && ji ) return ERROR; \\\/\\\/ 第 i 个元素不存在 e = p->data; \\\/\\\/ 取得第 i 个元素 return OK; } \\\/\\\/ 本算法在链表中第i 个结点之前插入新的元素 e Status ListInsert_L(LinkList L, int i, ElemType e) { int j; LinkList p,s; p = L; j = 0; while (p && j < i-1) \\\/\\\/ 寻找第 i-1 个结点 if (!p || j > i-1) return ERROR; \\\/\\\/ i 大于表长或者小于1 s = new LNode; \\\/\\\/ 生成新结点 if ( s == NULL) return ERROR; s->data = e; s->next = p->next; p->next = s; \\\/\\\/ 插入 return OK; } Status ListDelete_L(LinkList L, int i, ElemType &e) {LinkList p,q; int j; p = L; j = 0; while (p->next && j < i-1) \\\/\\\/ 寻找第 i 个结点,并令 p 指向其前趋 if (!(p->next) || j > i-1) return ERROR; \\\/\\\/ 删除位置不合理 q = p->next; p->next = q->next; \\\/\\\/ 删除并释放结点 e = q->data; free(q); return OK; } #includeLinkList.h void main() {LinkList L; int n,choice,i; ElemType e; about(); cout<<请输入链表中元素的个数; cin>>n; CreateList_L(L, n); showmenu(); \\\/\\\/功能列表 cin>>choice; while(choice!=5) { \\\/\\\/输入时候退出程序 switch(choice){ case 1:PrintList(L);break; \\\/\\\/1.查看输入的全部数据 case 2:{ cout<<输入你要查找的元素的位置: ; cin>>i;GetElem_L(L, i, e); cout<<第<>i; cout<>e; ListInsert_L(L, i,e); break;} \\\/\\\/3.链表插入元素 case 4: {cout<<请输入你要删除元素的位置; cin>>i; ListDelete_L(L, i, e) ; break;} \\\/\\\/4.链表删除元素 default:cout<<输入错误,请输入-5,输入重显示功能表^_^ <>choice; } }

声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。联系xxxxxxxx.com

Copyright©2020 一句话经典语录 www.yiyyy.com 版权所有

友情链接

心理测试 图片大全 壁纸图片