PTA 查找中间结点

PTA 查找中间结点,第1张

函数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;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1324285.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-12
下一篇 2022-06-12

发表评论

登录后才能评论

评论列表(0条)

保存