PTA 查找中间结点

函数find_middle()实现了对给定的单链表,查找到其中间结点。如果中间结点为两个,返回前面的那个结点的地址。请完成该函数。

函数接口定义:

Node* find_middle(Node* head);

head是单链表的头指针,函数返回查找到的结点地址。

裁判测试程序样例:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

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
根据提供的引用内容,我们可以使用二分法进行有序数列中的查找。首先,我们需要输入数列的元素个数N和要查找的值y。然后,我们按照二分法的思路进行查找。具体的代码实现可以参考引用中给出的C语言代码。 在代码中,我们使用了变量m和g来表示查找范围的起始位置和结束位置。通过比较要查找的值b与中间位置元素a[k的大小,不断缩小查找范围。如果找到了指定的值b,我们记录下查找次数shu,并输出该值在数组中对应的下标。如果数列中存在多个值为y的元素,我们按照下标序号顺序输出所有的位置。如果没有找到指定的值,我们输出"not found"。 总结起来,我们可以根据引用中给出的C语言代码,在PTA查找值k出现的次数,并输出其在数组中的位置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [pta7-5 利用二分查找搜寻所有待查找数据](https://blog.csdn.net/weixin_50591292/article/details/128070953)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [PTA 查找(散列查找)](https://blog.csdn.net/abyss_miracle/article/details/105861683)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值