一、栈:
1、先进后出
2、分类:
顺序栈:顺序表—数组——用于
1、数制转换 N!=0;N=N/8,N%8入栈 ;顺序出栈
2、括号匹配 :左括号直接进栈,右括号先看是否空(空:出错)非空,栈顶匹配
3、行编程问题:#代表退格符,当遇到非#进栈,是的话栈顶数据元素出栈,直到结束。
4、迷宫求解:入口入栈——顺时针可通——入栈——都不可通——直接删除栈顶——判断栈为不为空嘛
链式存储结构:
1、单链表头部作栈顶,只在头部做插入删除操作,实现进出栈。
2、入栈:s->data=e;s->next=top;top=s;O(1)
3、出栈:p=top;top=top->next;delete p;O(1)
二、队列:
1、定义:限定队尾插入,队头删除的线性表
2、先进先出
3、存储结构:
3、1顺序存储结构
顺序队列:front:队头 rear:队尾
假溢:rear无法插入数据,front前面还有空间。
解决变法——循环队列
循环队列:
1、看成首尾相接的圆环
2、模除得位置
3、
初始:front=rear;
入队:rear=(rear+1)/size; O(1)
出队:front:(front+1)/size; O(1)
判满:front=rear+1;
3、2链式存储结构:
1、链表结构
2、入队:s->next=rear->next;rear->nxt=s;rear=s;
3、出队:p=front->next; front->next=p->next; delete p;