总结

 #思维导图

#重要概念的笔记

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

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

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

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

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

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

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

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

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

                   也可以使用#include<queue>然后queue<int>q来定义队列,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:15  揍你没商量  阅读(72)  评论(0编辑  收藏  举报