链表是一种动态数据结构 链表是一种动态数据结构,之所以称之为动态,是因为在创建链表时,无需知道链表的长度(这和数组形成鲜明的对比)。 当插入一个结点时,我们只需为新结点分配内存,然后调整指针的指向来确保新节点被链接到链表…
分类:链表面试算法
链表排序(冒泡排序)
#include<stdio.h> #include<malloc.h> typedef struct StudentType { int a; …
单链表排序之选择排序(赞)
单链表排序是单链表的常见编程任务之一,也是面试中经常出现的题目。单链表排序的关键是交换算法,需要额外考虑。选择排序是比较直观的排序算法之一,这里就使用选择排序实现单链表的排序。 如果需要对选择排序复习一下,传送门:算法导…
【面试算法系列】逆序输出一个单链表 - C语言实现
将一个单链表的内容逆序输出,考虑到当一个链表的元素打印之前将该元素的前一个元素打印,运用这个思路可以使用递归来实现该功能,(不过该方法仍然存在,问题,当链表过长会导致栈溢出问题)代码如下: </pre><…
链表系列之单链表——使用单链表实现大整数相加
大数相加在我之前的一篇博客里有一个使用数组实现的方案,使用单链表实现更灵活。 有两个由单链表表示的数。每个结点代表其中的一位数字。 数字的存储是逆序的, 也就是说个位位于链表的表头。 写一函数使这两个数相加并返回结果,结…
链表的复杂面试题
1.单链表实现约瑟夫环(JosephCircle) 思路:首先约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一…
单链表反转(递归和非递归)
单链表反转有递归和非递归两种算法。 下面定义节点 typedef struct ListNode{ int value; ListNode* next; }ListNode; 在递归算法中的做法是: 1找到最后一个节点和…
数据结构与算法(1)链表,基于Python解决几个简单的面试题
最近头一直很大,老板不停地布置各种任务,根本没有时间干自己的事情,真的好想鼓起勇气和他说,我以后不想干这个了,我文章也发了您就让我安安稳稳混到毕业行不行啊…… 作为我们这些想要跨专业的人来说,其实很大的一个劣势就是没有经…
链表逆序算法实现
链表逆序算法实现 TYPE *reverse(TYPE *head) { TYPE *pf=NULL,*pb=NULL,*pr=NULL; pf = head; pb=pf->next; while(pb != N…
[算法总结] 一文搞懂面试链表题
本文首发于我的个人博客:尾尾部落 链表是面试过程中经常被问到的,这里把剑指offer 和 LeetCode 中的相关题目做一个汇总,方便复习。 1. 在 O(1) 时间删除链表节点 题目描述:给定单向链表的头指针和一个节…
算法题5 找出两个链表的第一个公共结点
题目:两个单向链表,找出它们的第一个公共结点。 链表的结点定义为: struct ListNode { int  …
【数据结构算法】线性表(四):单链表小结(面试题)
题目:快速找到未知长度单链表的中间节点 利用快慢指针原理:设置两个指针*search、 *mid都指向单链表的头节点。其中 *search的移动速度是 *mid的两倍。当 *search指向末尾节点的时候 *mid正好就…