找到单项链表中间那个元素,如果有两个则取前面一个
2012-05-11 19:20
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笔试题
- 找到单向链表中间那个元素,如果有两个则取前面一个
- 找到单向链表中间那个元素,如果有两个则取前边那个
- 每天一道算法题7 查找链表中倒数第k个结点 ; 输入一个单向链表。如果该链表的结点数为奇数,输出中间的结点;如果链表结点数为偶数,输出中间两个结点前面的一个
- 找到一个单项链表中,距离最后一个元素为k的那个元素
- 给定一个数组input[] ,如果数组长度n为奇数,则将数组中最大的元素放到 output[] 数组 最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到 output[] 数组中间两个位置偏右的那个位置上
- 删除一个单项链表的最中间的元素,要求时间尽可能短(不能使用两次循环)
- 删除一个单项链表的最中间的元素,要求时间尽可能短(不能使用两次循环)
- 一个有头尾的单链表,长度未知,如何快速的找出位于中间的那个元素?
- 题目:①判断一个单向链表是否有环,如果有环则找到环的入口节点。 ②判断两个单向链表是否相交,如果相交则找到交点节点。
- 删除一个单项链表的最中间的元素,要求时间尽可能短(不能使用两次循环)java
- 将两个数组中的元素有序存入到一个链表中(C语言)
- [面试题]设计一个算法找到数组中两个元素相加等于指定数的所有组合
- 每天一道LeetCode-----给定大小为n+1的数组,元素大小在[1 : n]之间,只有一个元素会重复出现多次,找到重复的那个
- [BD-EXAM]20091106在一棵一般的二叉树中找到指定的元素,如果有重复出现的元素,要求元素为深度最深的任何一个
- 给定一个单向链表(长度未知),请遍历一次就找到中间的指针,假设该链表存储在只读存储器,不能被修改
- 判断一个单项链表是否有循环,如果有循环输出循环点