题目:
用户输入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