随笔分类 -  数据结构(C语言)

摘要:原题:给定两个(单向)链表,判定它们是否相交并返回交点。请注意相交的定义基于节点的引用,而不是基于节点的值。换句话说,如果一个链表的第k个节点与另一个链表的第j个节点是同一节点(引用完全相同),则这两个链表相交。 法一:消除长度差 struct ListNode getIntersectionNod 阅读全文
posted @ 2020-03-26 14:04 Ruanzy 阅读(150) 评论(0) 推荐(0)
摘要:原题:给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。 法一:遍历两次,第一次测出链表长度,第二次遍历至中间节点。 struct ListNode* middleNode(struct ListNode* head){ int c=1; st 阅读全文
posted @ 2020-03-26 12:56 Ruanzy 阅读(122) 评论(0) 推荐(0)
摘要:原题:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 法一:反向初始化 struct ListNode* reverseList(struct ListNode* head){ struct ListNode* L=NULL; while(head){ struct Lis 阅读全文
posted @ 2020-03-26 12:41 Ruanzy 阅读(130) 评论(0) 推荐(0)
摘要:原题:请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。 法一:官方做法 使给定节点node的值等于下一节点node->next的值,再用常规操作将node->next删除。即实际上删除的不是给定节点,而是做了一个代换。 void deleteNode(str 阅读全文
posted @ 2020-03-24 17:11 Ruanzy 阅读(64) 评论(0) 推荐(0)
摘要:原题:给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。请你返回该链表所表示数字的 十进制值 。 链表定义: struct ListNode { int val; struct ListNode *next; }; 法一:数学 1 i 阅读全文
posted @ 2020-03-24 16:40 Ruanzy 阅读(83) 评论(0) 推荐(0)