单链表实现查找中间结点

题目:

用户输入x;

随机生成X个元素,输出中间元素。

若为奇数则输出中间,若为偶数输出中间两个数的平均值

链表实现

具体实现算法

(1)定义两个指针,首先将他们指向第一个元素

(2)快慢指针,快指针p1是慢指针p2的2倍速度。相当于p1+2,p2++;

(3)考虑可能是偶数个元素,快指针p1->next为空时,直接输出慢速度p2所指的元素,并跳出循环。

               若为奇数,直接输出慢速度p2所指的元素。

源代码如下:

/*
用户输入x;
随机生成X个元素,输出中间元素。
若为奇数则输出中间,若为偶数输出中间两个数的平均值
链表实现
*单链表的中间结点
*快慢指针都是头指针快指针是慢指针的2倍速度。
*/
#include<stdio.h>
#include<stdlib.h>
#define ERROR 0
#define OK 1
#define random(x) (rand()%x)//随机数0-100

typedef int Elemtype;
typedef struct Node{
	Elemtype data;
	struct Node *next;
};
typedef struct Node * LinkList;

void ListShow(LinkList L);
void ListInsert(Li
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值