函数find_middle()实现了对给定的单链表,查找到其中间结点。如果中间结点为两个,返回前面的那个结点的地址。请完成该函数。
函数接口定义:Node* find_middle(Node* head);
head是单链表的头指针,函数返回查找到的结点地址。
裁判测试程序样例:#include
#include
#include
typedef struct ListNode {
int num;
struct ListNode *next;
}Node;
Node *createlist(); /*裁判实现,细节不表*/
Node* find_middle(Node* head);
void display(Node *head);/*裁判实现,细节不表*/
int main()
{
Node *head,*p;
head = createlist();
p = find_middle(head);
display(p);
return 0;
}
/* 请在这里填写答案 */
输入样例1:
5
1 3 7 9 10
输出样例1:
7
输入样例2:
6
1 2 3 5 6 7
输出样例2:
3
代码如下:
Node* find_middle(Node* head)
{
int count = 0;
Node *p = head;
if(p == NULL)
return p;
while(p->next != NULL)
{
count++;
p = p->next;
}
p = head;
count = count/2;
while(count > 0)
{
p = p->next;
count--;
}
return p;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)