2021-10-27

我觉得数据结构好难啊,上来就卡在创建链表上了,之前学的全给老师了555555~
这段时间让我充个电,真的是大二代码敲的太少了!
I am sad!
所以今天更什么呢?待会儿见!

分享几个我没掌握的知识点

1、对于双向循环链表,在p指针所指的结点之后插入s指针所指结点的操作。
s->left=p;s->right=p->right;p->right->left=s;p->right=s;
这里引用别人的总结啦:双向链表的插入顺序:先搞定插入节点的前驱和后继,再搞定后结点的前驱,最后搞定前结点的后继。

2、实现什么样的数据结构先得知道不同数据结构的区别是什么。
数组:连续存储,遍历快且方便,长度固定,但添加删除需要前移n个数据或者后移n个数据。
链表:离散存储,添加删除方便,空间和时间消耗大,双向链表比单向链表更灵活,但是空间耗费也更大。
Hash表:数据离散存储,利用hash算法决定存储位置,遍历麻烦。
二叉树:一般的查找遍历,有深度优先和广度优先,遍历分前序、中序、后序遍历,效率都差不多,但是如果数据经过排序,二叉树效率还是不错的。
图:表示物件与物件之间的关系的数学对象,常用遍历方式深度优先遍历和广度优先遍历,这两种遍历方式对有向图和无向图均适用。

3、广义表。
广义表即我们通常所说的列表(lists)。它放松了对表元素的原子性限制,允许他们有自身结构。(这个我们的数据结构并没有学)

4、已知两个长度分别为m 和 n 的升序链表,若将它们合并为一个长度为 m+n 的降序链表,关于时间复杂度的问题。
评论区(牛客竞赛)有好多人在讨论,但是很认同的是从算法本质上的分析:算法的本质就是两个表进行比较,其中一个表比较完之后,剩下的直接插入。因此最好的情况,其实就只是短的那个表比较完了:O(min(m,n))。而最坏的情况,就只是长的那个表比较完了:O(max(m,n))。
这个解析来自刚刚洗过的白衬衫。

最后说个很好笑的点吧,我写的时候差点写成没有洗过的白衬衫哈哈哈(dbq),我觉得这位老师的解析都很优质!然后希望我下次的排版更好看!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值