链表属于比较简单的数据结构,由于比较基础所以是面试笔试经常会碰到题目类型。
题目1:使用高效的方法找出一个单向链表最后第n个元素
type * find_element(type *link, int n){
type *p;
int i;
p = link + n;
if (*p == null)
error; //链表节点小于n
while( *p != null){
link++;
p++;
}
return link;
}
当然可能会有更好的方法,希望大家能共享
还有以前马口同学做到过一个题目与此题思路类似,就是要用最快的方法找到链表最中间那个元素,其实思路
很相似,都是借用另一个指针,一个指针每次迭加一个单位,另一个迭加两个单位,当走在前面的指针走到链
表尾,那后面的指针指向的就是链表最中间的那个元素,当然这道题的条件是链表元素的个数为偶数。奇数的
话可能要做调整。