算法日志(1)------数据结构讲解

                                                                                                算法日志

                                                                                 2017.11.25 第一天)

数据结构:

线性表:数据以一对一的形式存储,每个元素都有唯一的前驱、唯一的后继。

栈:数据的插入、查询、删除只能从栈顶操作。(后进先出)

队列:数据的插入、查询、删除只能在队首/队尾操作。(先进先出)

栈的需求与基本操作:

Top:表示栈顶元素的位置

Stack[i]:表示栈中第I个元素的值

0、初始化

  Top=0;

1、插入元素X

  Top=top+1;

  Stack[top]:=x;

2、判断栈非空

  Top>0

3、弹出栈顶元素

  If top>0 then

Dec(top);

4、取出栈顶元素

  If top>0 then

Exit(stack[top]);

 

 

队列的需求与基本操作:

Headtail:表示队首/队尾的位置

Que[i]:表示队列中第I个元素的位置

0、初始化

  Head=1

  Tail=0

1、判队列非空

  Head<=tail ?

2、在队首/队尾插入元素X

  队尾:tail=tail+1

        Que[tail]=x;

  队首:head-head-1;

        Que[head]=x;

3、队首/队尾弹出

   队首:if head<=tail head=head+1;

   队尾:if head<=tail tail=tail-1;

4、取出队首/队尾元素

   队首:if head<=tail exit(que[head]);

   队尾:if head<=tail exit(que[tail]);

单调队列*(递增)

对于任意I J,head<=i<=j<=tail

满足:a[que[i]]<=a[que[j]]

单调队列(严格递增)

满足:a[que[i]]<a[que[j]];

(单调栈同上)

单调队列的应用:定区间求最值。

                     ↓

    后面的元素比前面的小于等于,前面删除,否则保留。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值