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

来源:互联网 发布:中国银行淘宝卡 编辑:程序博客网 时间:2024/06/07 14:30

                                                                                                算法日志

                                                                                 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]];

(单调栈同上)

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

                     ↓

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

原创粉丝点击