数据结构
smx_dd
这个作者很懒,什么都没留下…
展开
-
二叉树的基本操作
二叉树结构体定义以及函数声明: typedef int BTDataType; typedef struct BinaryTreeNode { struct BinaryTreeNode* _left; struct BinaryTreeNode* _right; BTDataType _data; }BTNode; BTNode* BuyBTNode(BTDataType x);...原创 2018-06-07 00:12:35 · 326 阅读 · 0 评论 -
一个数组实现两个栈(共享栈)
用一个数组来实现两个栈,数组的头和尾分别为两个栈底。入栈的时候将数据分别从数组的头尾向中间存放。 当栈顶1在栈顶2右边的时候说明栈已满。因为要实现两个栈,我们可以定义一个变量,来判断我们对哪一个栈来进行操作。 结构体定义以及函数声明部分: #define MAX 10 typedef int DataType; typedef struct Stack { DataType* _a...原创 2018-06-02 23:06:22 · 2124 阅读 · 0 评论 -
元素入栈、出栈的合法性判断
假设有一组数据它的入栈顺序为1、2、3、4、5,那么它的出栈顺序有很多种可以是1、2、3、4、5,也可以是4、5、3、2、1。那么我们可以写一个程序来判断一组数据是不是合法的出栈顺序。 思路:可以用栈来解决这类问题,定义一个栈s,首先这组数据要和入栈数据的个数一样,否则不合法。我们可以定义两个数组arr1和arr2。数组arr1为入栈顺序,arr2为出栈顺序。分别定义两个指针p、q指向数组的首元...原创 2018-05-27 01:05:52 · 1149 阅读 · 0 评论 -
使用两个栈实现一个队列和使用两个队列实现一个栈
使用两个栈实现一个队列: 我们都知道栈是先进后出的结构,而队列是先进先出的结构。要实现一个队列的功能我们用栈s1来实现入队列的操作,栈s2来实现出队列的操作。入队列的操作和入栈一样,将数据保存到s1中即可。出队列时,我们首先判断一下栈s2是否为空,若为空,则将栈s1中的数据从栈顶元素开始依次入栈s2,并删除s1栈顶元素,这样s1栈底元素就到了s2的栈顶,然后删除s2栈顶元素。若不为空,则直接将s...原创 2018-05-23 23:42:50 · 1604 阅读 · 0 评论