C++数据结构算法演示系统设计(5)
时间:2016-12-10 11:38 来源:毕业论文 作者:毕业论文 点击:次
(S.top = S.base + S.stacksize; S.stacksize += STACKINCREMENT; ) 4.1.3 队列算法描述 (1)算法思想:只能一端进行插入(rear),另一端进行删除(front)。 (2)插入和删除操作算法。为能判断队列是空的还是满的,用“FULL” 和“EMPTY”来显示此时队列的情况,输入判断队列是否溢出,直到系统提示“FULL”,表示该队列已经满了,连续单点击“取出”即可按照先进先出的原则依次将输入的数据取出,单击“结束”即可退出该模块。若做插入操作需要先构造一个空队, ( p->data = e; p->next = NULL;Q.rear->next = p; Q.rear = p;) 插入运算(p->data = e;p->next = NULL; Q.rear->next = p;Q.rear = p;) 删除运算(p = Q.front->next;e = p->data;Q.front->next=p->next; if(Q.front == p)Q.front == Q.rear;)队列中最后一个元素被删除时释放p。 4.1.4 二叉树算法描述 (1)算法思想:度为2,有左右子树之分,其次序不能任意颠倒。 (2)二叉树顺序存储结构形式描述思路很简单,根放在0位置,以后假定当前位置是i,那么左子结点在2i+1,右子结点在2i+2。比如根的左子结点在1,右子结点在2。结点1的左子结点在3,右子结点在4。定义一种空值表示没有子结点,比如empty。 在含有n个结点的二叉链表中有n+1个空链域。二叉树流程,输入数据x判断数据大小,查找根节点s左右均为空的情况下与其相比较, (s->data = x; s->lchild = Null; s->rchild = Null; ) 若x大则为右子树((x>f -> data) f->rchild = s ;), 若x小为左子树(x< f -> data) f->lchild = s ;)。 4.2系统的实现 本课题是一个动态演示数据结构算法执行过程的辅助教学系统,它可适应用户对算法的输入数据和过程执行的控制的不同需求,在计算机的屏幕上显示算法执行过程中数据的逻辑结构或存储结构的变化状况或递归算法执行过程中栈的变化状况。 整个系统使用菜单驱动方式,每个菜单包括若干选项。每个菜单项对应一个动作或一个子菜单。系统一直处于选择菜单项或执行动作状态,直到选择了退出动作为止。 数据结构算法演示系统具有操作便捷、形象生动等特点,对于深化对数据结构算法的理解,提高计算机程序设计水平具有很好的促进作用,能有效地改善数据结构算法教学的质量和效率。数据结构是诸多计算机课程中尤其主要的一门课程,学好数据结构对以后学习其他相关课程有很大的帮助,而开发的这个演示系统能更好帮助大家理解数据结构中的一些算法。鉴于更好的理解,我将详细描述自己的算法。 总结 随着计算机学科的发展,数据结构作为一门专业技术基础课,它能帮助大家学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构、存储结构及其相应的算法,并初步学会算法的时间分析和空间分析的技术,但数据结构中的一些算法(线性表、栈和队列、串等)在理解上会有些困难,数据结构算法演示系统正是解决这个困难的一种有效方法,他给人更直观的理解。 本课题是一个动态演示数据结构算法执行过程的辅助教学系统,它可适应用户对算法的输入数据和过程执行的控制的不同需求,在计算机的屏幕上显示算法执行过程中数据的逻辑结构或存储结构的变化状况或递归算法执行过程中栈的变化状况。 这几个月紧张的毕业设计,使我系统地体验了一个简单想法转化为一个实际计算机程序项目的整个过程,这个过程使我对“软件工程”、“可视化编程”等知识有了更切身的体会,提高了我对计算机编程的驾驭能力,让我更深刻地理解了数据结构这门课程的重要性,本系统的实现主要运用了数据结构和c++ builder开发工具,让我更深刻地理解了数据结构这门课程的重要性,整个的编程过程,就是我不断发现自己的不足之处、并不断弥补自己不足之处的过程,相信在不断的努力后,我会进一步提高自己的水平,作出更好的成绩。 (责任编辑:qin) |