栈
栈是受限的线性表(只允许在一端进行插入删除操作)
LIFO 特点 后进先出
当n个不同元素进栈时,出栈元素的不同排列个数1/(n+1)Cn 2n
顺序栈:(S.top=-1) 进栈: if(S.top==MaxSize-1) 栈满 S.data[++S.top]=x 入栈: if(S.top==-1)栈空 x=S.data[S.top--]
大致理解图:
链栈: 不带头结点: 出栈: x=top->data;top=top->next; 入栈: x->next=top;top=x; 带头结点: 出栈: x=top->next->data;top->next=top->next->next 入栈: x->next=top->next;top->next=x;
栈并不复杂 就以一道题结束
简单来说就是abcdef cab必错 放入abc后出c a不可能比b先出 所以不需要画图 就一个简单方法
队列
受限的线性表(一端进入 一端删除)
记死 队满: Q.front=(Q.rear+1)%MaxSize 队空: Q.rear=Q.front 入队: Q.rear=(Q.rear+1)%MaxSize 出队: Q.front=(Q.front+1)%MaxSize 长度(元素个数): (Q.rear+MaxSize-Q.front)%MaxSize
循环队列: 入队: if(Q.front=(Q.rear+1)%MaxSize)队满 Q.data[Q.rear]=x; Q.rear=(Q.rear+1)%MaxSize; 出队: if(Q.rear=Q.front)队空 x=Q.data[Q.front]; Q.front=(Q.front+1)%MaxSize;
链式存储: 入队: s->data=x; s->next=NULL; Q.rear->next=s; Q.rear=s;修改尾指针 出队: x=p->data; Q.front->next=p->next; free(p)
栈队列应用
这个并不困难理解
串
因为参加考试范围考察非常简单就不多赘述 并不涉及KMP算法
就是简单的字符串 和 一些操作
参考:https://www.cnblogs.com/Aurora-hu/p/15866263.html
今日状态不佳 故此敷衍消失
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?