第三章---栈和队列

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

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);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值