找到单向链表中间那个元素,如果有两个则取前面一个
2014-09-08 16:02
246 查看
找到单向链表中间那个元素,如果有两个则取前面一个 typedef struct node { int element; node * next; }Node; //p为指向单链表的第一个节点 Node * FindMiddleElement(Node * &p) { Node * head = p; int n = 0; while (head != NULL) //统计节点个数 { n++; head = head->next; } head = p; if (1 == n % 2 ) //如果奇数个节点返回指向中间节点的指针 { return (head + n / 2); } else //如果偶数个节点返回指向中间两个节点中的前一个的指针 { return (head + n / 2 - 1); } }
相关文章推荐
- 找到单向链表中间那个元素,如果有两个则取前面一个
- 找到单向链表中间那个元素,如果有两个则取前面一个--google笔试题
- 找到单项链表中间那个元素,如果有两个则取前面一个
- 找到单项链表中间那个元素,如果有两个则取前面一个
- 找到单项链表中间那个元素,如果有两个则取前面一个
- 找到单向链表中间那个元素,如果有两个则取前边那个
- 给定一个数组input[] ,如果数组长度n为奇数,则将数组中最大的元素放到 output[] 数组 最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到 output[] 数组中间两个位置偏右的那个位置上
- 每天一道算法题7 查找链表中倒数第k个结点 ; 输入一个单向链表。如果该链表的结点数为奇数,输出中间的结点;如果链表结点数为偶数,输出中间两个结点前面的一个
- 找到单向链表中间那个元素
- 中位数 21% 通过 给定一个未排序的整数数组,找到其中位数。 中位数是排序后数组的中间值,如果数组的个数是偶数个,则返回排序后数组的第N/2个数
- 12个球一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球,并且知道此球比其它球是轻还是重,如果13个球呢
- 一个无序整数数组中找到最长连续序列(Longest Consecutive Sequence)和两个元素使得相差最小
- vector::erase方法,返回值是更新后的容器的被删除元素的后一个元素的迭代器,如果需要指向删除元素的前面一个元素的迭代器就要-1
- 设计一个算法找到数组中两个元素相加等于指定数的所有组合
- 百度面试题:一个单链表,长度未知,如何快速的找出位于中间的那个元素
- 百度面试题:一个单链表,长度未知,如何快速的找出位于中间的那个元素
- 找到两个vector里相同的元素(重复的元素只要一个)
- 在一个数组或字符串中找到出现频率最高的那个元素的方法
- [面试题]设计一个算法找到数组中两个元素相加等于指定数的所有组合
- 华为:给定一个数组input[],如果数组长度n为奇数,则将数组中最大的元素放到 output[]数组最中间的位置,如果数组长度n为偶数。。 .