总结

思维导图

重要概念的笔记

线性表 顺序存储结构 删除或插入一个数据,时间复杂度为o(n),除非删除或插入最后一个数据。

​ 读取一个数据时间复杂度为o(1)。

​ 内存分配在编译时已确定,容易造成内存浪费。

​ 链式存储结构 删除和插入一个数据,时间复杂度为o(n),除非删除或插入第一个或最后一个数据。

​ 查找一个数据时间复杂度为o(n)。

​ 内存分配在程序执行时发生,不会造成内存浪费。

栈和队列 栈是先进后出,队列是先进先出。

​ 可以直接使用#include然后stack<int>s1来定义栈,就可以直接使用栈的功能。

s1.push(x),是入栈,s1.top()是查看栈顶元素,s1.pop()是出栈,s1.empty()是判断栈是否为空,s1.size()是查看栈中有多少元素。

​ 也可以使用#include然后queueq来定义队列,q.push(x)是入队,q.pop()是出队,还有q.front()、q.back()、q.size()、q.empty()

​ 队列中rear指向队尾的位置,front指向队头的前一个位置。

串 空格串是只包含空格的串,空串是零个字符的串。

​ BF匹配模式,思路简单,但时间复杂度太大。

​ KMP匹配模式,思路复杂,时间复杂度小

​ 串也是可以链式存储也可以顺序存储,链式存储可以几个单词存在一个结点里,比较方便。

算法 一个好的算法就是在达到相同目的的前提下,空间复杂度和时间复杂度更小就更好。

​ o(1)<o(logn)<o(n)<o(nlogn)<o(n²)<o(n³)<o(n!)

#疑难问题及解决方案

如何用链表来存储学生信息管理系统,并能够进行查找,删除,遍历,统计的功能?

解决方案是:运用文件的知识,将信息先存储在文件里,之后运行时,先在主函数里读取文件信息,形成新节点从而形成新链表。

如何计算next 和nextval的值?

解决方案是:上课理解,不懂的看别人写的博客。

posted @ 2020-03-26 18:28  揍你没商量  阅读(83)  评论(0编辑  收藏  举报