数据结构与算法
数据结构与算法
Itistimetogo
这个作者很懒,什么都没留下…
展开
-
广义表的长度和深度
举例:A=(a,b),C=(c,(d,e)),F=(A,C,f)请问F的长度和深度分别是多少?首先,把F中A和C具体写出,即 F=((a,b),(c,(d,e)),f);关于长度:我们可以把F换种表示方法,即F={(a,b),[c,(d,e)],f},这里看起来舒服些。只需要把最外层,即{}中的元素看成3个独立的个体——(a,b)、 [c,(d,e)]、 f认为F的长度为3。关于深度:深度,认为是由内而外最深。我们通过观察F中的括号,"d,e"由内而外共经历了最深的3层括号,即可认为F的原创 2020-11-10 23:28:32 · 1793 阅读 · 0 评论 -
二维数组的行优先和列优先
注意不要混淆了定义数组和取元素时的下标。举个例子,二维数组A[2][3]。若按行优先,A[1][1]则是第5个元素。数字小的时候可以画图观察一下。(求存储地址同理)因为之前第一次看的时候混淆了,结果就算错了。今天再看到就记录一下:)...原创 2020-11-08 00:13:40 · 10141 阅读 · 2 评论 -
(关于单链表的真题)已知一个带有表头结点的单链表...请设计一个尽可能高效的算法,查找链表中倒数第k个位置的结点。
真题描述已知一个带有表头结点的单链表,结点结构为datanext假设该链表只给出了头指针head。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k个位置上的结点。若查找成功,输出该结点的data值,返回1;否则,返回0。题解:可以看作是 2个小朋友玩石头剪刀布的游戏,谁赢了谁往前走一步。假设出发地也算1步,①号小朋友已经走 k 步,而②号小朋友从来没赢过;????为了游戏不那么无聊,接下来 石头剪刀布无论谁赢了,2个小朋友 都 能向前走一步,直到①号小朋原创 2020-07-14 17:20:19 · 5611 阅读 · 2 评论 -
顺序表和链表的不同之处(整理)
1.存储空间方面顺序表需要一次性预先分配,链表可在需要时进行再次分配2.存储密度方面顺序表存储率为100%,即存储密度等于1;而链表的存储率小于100%,即存储密度小于13.存储效率方面顺序表根据其可进行随机访问的特性,支持随机存取;链表只能采取顺序存取,如要读取链表中第i个元素,则必须访问其之前i-1个元素之后才能找到它4.插入和删除效率方面链表可直接修改指针,不需要花时间去移动元素,此时的时间复杂度为O(1);顺序表(插入/删除)都平均需要移动近一半的元素,此时的平均时间复杂度为O(n原创 2020-07-08 23:58:44 · 1786 阅读 · 0 评论 -
将两个升序链表合并为一个新的 升序 链表并返回(C语言)
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){ //带头结点 //struct ListNode *p=l1->next; //struct ListNode *q=l2->next; //不带头结点 struct ListNode* l3, *t; l3=(struct ListNode*)malloc(sizeof(struct Li原创 2020-07-05 01:10:03 · 2760 阅读 · 5 评论