栈、队列和串的学习
直接上干货:
栈和队列被认为是操作受限的线性表,因为栈的插入和删除操作只能在表尾进行,队列的插入只能在表尾进行,而删除只能在表头。串是一种以字符作为数据元素的线性表,有时也被称为字符串。
tips:栈中允许插入和删除的一端称为栈顶。
栈的基本运算有:
1、置空栈SetNull(S):将栈S置为空栈
2、入栈Push(S, x): 将元素x插入到栈S的栈顶
3、出栈Pop(S): 删除栈S的栈顶元素
4、取栈顶元素GetTop(S):返回栈S的栈顶元素,栈顶元素不出栈
5、判栈空Empty(S):判定栈S是否为空
tips:队列中允许插入的一端称为队尾(rear),允许删除的一端称为队头(front)。
队列的基本运算有:
1、置空队SetNull(Q):将队列Q置为空队列
2、入队EnQueue(Q, x):将元素x插入到队列Q的队尾
3、出队DeQueue(Q):删除队列Q的队头元素
4、取队头元素GetFront(Q):返回队列Q的队头元素,队头元素不出队
5、判队空Empty(Q):判断队列Q是否为空
注意:队头指针所指位置永不存储队列元素,当队列满时,其长度实际为数组长度减1
串:串也称字符串,是零个或多个字符组成的有限序列,因此可以看成结点元素仅由一个字符组成的特殊线性表
串的基本运算主要有以下几种:
1、赋值(=):将一个串的串值赋给一个串变量
2、求串长度(GetLength):GetLength(S)表示求串S的长度
3、求子串(Substr):Substr(S,i, j)表示返回从串S的第i个字符开始的连续j个字符构成的字符串
4、串连接(Strcat):Strcat(S1, S2)表示将串S2的串值追加到串S1的末尾,形成的新串依然存在S1中
5、比较串大小(Strcmp):Strcmp(S1, S2)表示比较串S1和串S2的大小。若返回值为0,表示S1与S2相等;若返回值小于0,即表示S1<S2;若返回值大于0,表示S1>S2。
6、插入(Insert):Insert(S1, i, S2)表示将串S2插入到串S1的第i个位置。
7、删除(Delete):Delete(S, i, j)表示将串S中从第i个字符开始的连续j个字符构成的子串删除
8、替换(Replace):Replace(S, T, R)表示用串R替换串S中的所有子串T。
例如:S = “abcdabg”,执行Replace(S, “ab”, “123”)后变为S = “123cd123g”
9、定位(Index):Index(S1, S2)函数完成在串S1中查找S2的功能,若能找到,则返回S2
在S1中首次出现的位置,否则返回0
例如:
Index(“abcdefgcdef”,“cde”) = 3
Index(“abcdefgcdef”,“cde”) = 0
树:
二叉树:每个节点最多含有两个子树的树
哈夫曼树:带权路径长度最短的二叉树称为哈夫曼树或最优二叉树
树的遍历:按照某种次序访问树中的所有结点,使得每个节点都被访问一次,且仅被访问一次。
树的遍历方法主要有:前序遍历、后续遍历、层序遍历
存疑:如果是二叉树,还有中序遍历
前序遍历:根在前,从左往右,一棵树的根永远在左子树前面,左子树又永远在右子树前面 (根左右)
后序遍历:根在后,从左往右,一棵树的左子树永远在右子树前面,右子树永远在根前面(左右根)
层序遍历:将一棵树从上到下,从左到右的遍历。
二叉树的中序遍历:根在中,从左往右,一棵树的左子树永远在根的前面,根永远在右子树的前面(左根右)
举个栗子:

前序遍历:A BDHIEJ CFKG
中序遍历:HDIBEJ A FKCG
后序遍历:HIDJEB KFGC A
层序遍历:ABCDEFGHIJK
本文深入探讨了数据结构中的基本元素——栈、队列和串,详细阐述了它们的操作特性,如栈的压入、弹出,队列的入队、出队,以及串的常见操作如赋值、求长度和子串。此外,还介绍了树的遍历方法,包括二叉树的前序、中序、后序遍历。这些基础知识对于理解和应用计算机科学至关重要。

1460

被折叠的 条评论
为什么被折叠?



