定义
线性表
是具有相同数据类型的
n
(
n≥0
)个数据元素的有限 序列,其中
n
为表长,当
n = 0
时线
性表是一个空表。若用
L
命名线性表,则其一般表示为
L
= (
a
1
,
a
2
, … ,
a
i
,
a
i
+1
, … ,
a
n
)
栈(
Stack
)
是只允许在一端进行插入或删除操作的
线性表
队列(
Queue
)
是只允许在一端进行插入,在另一端删除的
线性表
基本操作
栈:
InitStack(&S)
:
初始化
栈。构造一个空栈
S
,
分配内存空间
。
DestroyStack(&S)
:
销毁
栈。销毁并
释放
栈
S
所占用的
内存空间
。
Push(&S,x)
:
进栈
,若栈
S
未满,则将
x
加入使之成为新栈顶。
Pop(&S,&x)
:
出栈
,若栈
S
非空,则弹出栈顶元素,并用
x
返回。
GetTop(S, &x)
:
读栈顶元素
。若栈
S
非空,则用
x
返回栈顶元素
其他常用操作:
StackEmpty(S)
:判断一个栈
S
是否为空。若
S
为空,则返回
true
,否则返回
false
。
队列:
InitQueue(&Q)
:
初始化
队列,构造一个空队列
Q
。
DestroyQueue(&Q)
:
销毁
队列。销毁并
释放
队列
Q
所占用的
内存空间
。
EnQueue(&Q,x)
:
入队
,若队列
Q
未满,将
x
加入,使之成为新的队尾。
DeQueue(&Q,&x)
:
出队
,若队列
Q
非空,删除队头元素,并用
x
返回。
GetHead(Q,&x)
:
读队头元素
,若队列
Q
非空,则将队头元素赋值给
x
。
其他常用操作:
QueueEmpty(Q)
:判队列空,若队列
Q
为空返回
true
,否则返回
false
。
中缀表达式转后缀表达式
中缀转后缀的手算方法:
① 确定中缀表达式中
各个运算符的运算顺序
② 选择下一个运算符,按照「左操作数 右操作数 运算符」的方式组合成一个新的操作数
③ 如果还有运算符没被处理,就继续 ②
((15 ÷ (7 − (1 + 1))) × 3) − (2 + (1 + 1)) 中缀表达式
③ ② ① ④ ⑦ ⑥ ⑤
15 7 1 1 + - ÷ 3 × 2 1 1 + + - 后缀表达式
① ② ③ ④ ⑤⑥ ⑦