3.1栈的类型定义
约定:an为栈顶,a1为栈底
栈:插入只能在n+1的位置(表尾---栈顶)上插入,只能删除n位置上(表尾---栈顶)的元素,栈底是封死的
队列:插入只能在n+1的位置上插入,只能删除第一个元素,两端都是开放的
基本操作:
InitStack(&S)---初始化
DestroyStack(&S)---销毁栈
StackEmpty(S)---判断栈空
StackLength(S)---栈长
GetTop(S,&e)---取得栈顶元素
ClearStack(&S)---将S清为空栈
Push(&S,e)---入栈
Pop(&S,&e)---出栈
3.2栈的应用举例
例一:数制转换
算法基于原理:
N=(N div d)Xd+N mod d
计算过程中得到的数保留,最后从尾到头输出,保留顺序与输出顺序相反----问题本身的后进先出性---栈
∴余数保留入栈,商保留继续循环相除,最后输出
void conversion()
{
InitStack(S);
scanf("%d",N);
while(N)
{
Push(S,N%8);
N=N/8;
}
while(!StackEmpty(S))
{
Pop(S,e);
printf("%d",e);
}
}

本文介绍了数据结构中的栈和队列。栈是一种后进先出(LIFO)的数据结构,常见操作包括初始化、入栈、出栈、获取栈顶元素等,应用于括号匹配、数制转换等问题。队列是一种先进先出(FIFO)的数据结构,常用操作有初始化、入队、出队、获取队头元素等,常见于打印机队列、任务调度等场景。文章还详细讲解了栈和队列的链式和顺序实现方式。
最低0.47元/天 解锁文章
2050

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



