
数据结构—链表—简单
文章平均质量分 55
布丁咩咩
这个作者很懒,什么都没留下…
展开
-
删除排序链表中的重复元素
1.问题描述:给定一个排序链表,删除所有重复的元素每个元素只留下一个。2.思路:例如给定链表1->1->2->3->3->null,返回1->2->3->null。 首先要把头指针储存在p中,然后让head不断向后移,直到head的指针域指向空。如果head的指针域指向的数据域等于head的数据域,则说明head与它的下个节点重复,则head的指针域应指向head的原创 2017-03-27 22:24:31 · 280 阅读 · 0 评论 -
合并两个排序链表
1.问题描述:将两个排序链表合并为一个新的排序链表。2.思路:建立一个新的头节点为0的链表,并且建立一个指针让它指向0,再分以下几种情况①l1或l2为空,则新链表中应插入不空的链表②若l1,l2都不是空,则新链表中第一个插入的节点应为l1,l2中小的那个3.代码:/** * Definition of ListNode * class ListNode { * publi原创 2017-03-30 22:20:43 · 177 阅读 · 0 评论 -
链表倒数第n个节点
1.问题描述:找到单链表倒数第个节点,保证链表中节点的最少数量为n。2.思路:例如给定链表3->2->1->5->null和n=2,返回1首先遍历整个链表,得到链表中的节点总数,再循环遍历从第一个节点到倒数第n个节点,并且head的指针不断向后移,最后返回head,即为链表的倒数第n个节点。原创 2017-03-30 17:19:36 · 265 阅读 · 0 评论 -
链表划分
1.问题描述:给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。 你应该保留两部分内链表节点原有的相对顺序。2.思路:例如给定链表1->4->3->2->5->2->null和n=3,返回链表1->2->2->4->3->5->null.可以定义两个新的链表,一个用来储存比3小的节点,另一个用来储存大于等于3的节点原创 2017-03-30 16:29:51 · 328 阅读 · 0 评论 -
二叉树的中序遍历
1.问题描述:给出一棵二叉树,返回其中序遍历、2.思路:正如样例给出二叉树 {1,#,2,3}, 1 \ 2 / 3返回 [1,3,2]. 要定义一个向量储存中序遍历的节点值,最终返回这个向量,即可得到该二叉树的中序遍历。二叉树的中序遍历为按中序遍历的方式访问根的左子树,访问根,按中序遍历的方式访问根的右子树。3.代码:/原创 2017-04-08 11:27:53 · 389 阅读 · 0 评论 -
翻转链表
1.问题描述:翻转一个链表,例如给出一个链表1->2->3->null,翻转后为3->2->1->null2.思路:3.代码:/** * Definition of ListNode * * class ListNode { * public: * int val; * ListNode *next; * * ListNode(int val原创 2017-03-29 23:54:41 · 162 阅读 · 0 评论 -
链表插入排序
1.问题描述:用插入排序对链表排序2.思路:例如Given 1->3->2->0->null, return 0->1->2->3->null首先建立一个新的节点为0.并令dummy指向0,再向0后面插入给定链表的第一个节点(在这之前要用a指向head->next,这样方便后面元素的插入),插入第一个节点之后,head的指向向后移动,即为开始时a的指向,然后,如果p->next->val>原创 2017-03-29 21:16:32 · 241 阅读 · 0 评论 -
两两交换链表中的节点
1.问题描述:给一个链表,两两交换其中的节点,然后返回交换后的链表。2.思路:例如给定链表1->2->3->4应返回2->1->4->3应该定义一个n来储存当前节点的数据域,再把它下一个节点的数据域赋值给当前节点,n赋值给下一个节点的数据域,这样就可以交换两个节点,完成后再让p指向它的下下个节点再重复刚才的操作,便可以两两交换其中的节点。最终返回头节点便可得到交换后的链表。3.代码:原创 2017-03-28 23:39:07 · 307 阅读 · 0 评论 -
删除链表中倒数第n个节点
1.问题描述:给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。2.思路:首先要定义一个头指针并且要在头指针的前面加一个dummy,用来储存头指针,并且一定要把dummy赋值给head。这样如果删除的是第一个元素,还有保存头节点的dummy可以返回删除头节点后的链表。另外再定义length来计算链表中节点数,再从头节点开始遍历链表一直到要删除节点的前一个节点,再把该节点的next指向它原创 2017-03-28 22:32:25 · 308 阅读 · 0 评论 -
在O(1)时间复杂度删除链表节点
1.问题描述:给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在O(1)时间复杂度删除该链表节点。2.思路:例如给定1->2->3->4和节点3,删除后链表为1->2->3。 应该使待删除节点的指针域所指向的数据域赋值给该节点的数据域,一定要记得把删除节点的指针域指向它的下一个节点的指针域。3.代码:/** * Definition of Lis原创 2017-03-27 23:14:11 · 626 阅读 · 0 评论 -
链表求和
1.问题描述:你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。2.思路:这个题要分成多种情况来看①l1为空,返回l2②l2为空,返回l1③l1,l2都不为空,例如给定两个链表3->1->5->null,5->9->2->null,第一个节点的和为8,第二个节点的和为1原创 2017-03-30 23:38:38 · 333 阅读 · 0 评论