/*
头插法创建链表
打印输出链表内容
利用快慢指针法找出链表中间元素
链表内容为奇数个时,打印中间值
链表内容为偶数个时,打印中间两个值
*/
#include<stdio.h>
typedef struct link
{
char data;
struct link *next;
}linklist;
/*头插法创建链表,注意头插法刚好是逆序*/
linklist *Create_List_Front()
{
linklist *head, *p;
char ch;
head = NULL;
printf("依次输入字符('#'表示结束):\n");
ch = getchar();
while (ch != '#')
{
p = (linklist*)malloc(sizeof(linklist));
p->data = ch;
p->next = head;
head = p;
ch = getchar();
}
return head;
}
/*打印输出链表内容*/
void link_print(linklist *L)
{
linklist *p;
p = L;
while (p != NULL)
{
printf("%c", p->data);
p = p->next;
}
}
int main()
{
linklist *fast, *low;
fast = low = Create_List_Front();
link_print(fast);
/*快慢指针原理,快指针一次遍历两个,
慢指针一次遍历一个,当快指针到达链表尾部时,
慢指针刚好指在链表中间值*/
while (fast->next != NULL)
{
if (fast->next
数据结构——快慢指针法查找链表中间值
最新推荐文章于 2022-08-21 11:46:59 发布
本文介绍了如何通过快慢指针法在C语言中寻找链表的中间元素。首先,通过头插法创建链表,然后打印链表内容。接着,利用快慢指针,快指针每次前进两步,慢指针每次前进一步,当快指针到达链表尾部时,慢指针指向的位置即为链表中点。对于奇数长度的链表,输出中间值;偶数长度则输出中间两个值。
摘要由CSDN通过智能技术生成