
求数据结构做二叉树实验的心得体会、、、
树的话是计算机语言,其中二叉树是树的一个特例,是树每个节点分出2个小节满树的树为二叉树。
数据结构实验报告: 查找 排序 图的存储与遍历 二叉树的存储与遍历
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; } }
学习数据结构的心得体会
数据结构学习体会及教学建议时间过的很快,一转眼一学期的数据结构课程就已经快要告一段落了,在接触这么课以前,我觉得编程无非就是会写代码就好了。
然而事实上数据结构对于程序来说,有着非常重要的地位。
随着计算机应用领域的不断扩大,非数值计算的问题占据了当今计算机应用的绝大部分,简单的数据类型已经远远不能满足需要,个数据元素之间的复杂关系已经不是普通数学方程式能够表达的了,所以数据结构就扮演了十分重要的角色。
在学期初,我觉得数据结构还是比较简单的,但可能由于之前c语言学习对指针掌握的不够熟练,导致在数据结构中接触到与指针有关的问题,例如线性表,堆栈,队列,二叉树等问题的时候,都会显得有些吃力。
但是在不断学习数据结构的过程中我也不断加强了对指针的学习,现在我已经能够基本掌握指针的相关知识并且能够熟练运用了。
这一学期的学习下来我发现想要学好数据结构有以下几点经验{虽然可能我的数据结构学的并不是很好}1.初步了解算法思想、原理想要弄清楚一个算法的实现,首先要知道这个算法的大致原理,这是最简单的一步,也是最基础的一步,只有明白算法想要干什么,才能弄清楚相应的代码段是为什么2.钻研课本代码段对于书上的算法代码,我们一定要仔细钻研每一步的具体含义和目的,在此基础上深入的了解算法的实现过程,而不是一味的四级硬背,不仅无聊,而且效率低下。
3.查找各种算法资料例如排序算法,其实历史上有很多不同的排序算法,书上