数据结构——快慢指针法查找链表中间值
2017-07-04 20:34
239 查看
/* 头插法创建链表 打印输出链表内容 利用快慢指针法找出链表中间元素 链表内容为奇数个时,打印中间值 链表内容为偶数个时,打印中间两个值 */ #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->next != NULL) { fast = fast->next->next; low = low->next; } else { fast = fast->next; printf("\n%c", low->next->data); } } printf("\n%c", low->data); }
相关文章推荐
- 数据结构之快慢指针查找链表中间结点
- 数据结构之链表面试题汇总(一)--查找单向链表的中间节点、倒数第K个节点
- 算法学习-数据结构之链表操作,创建,插入,删除,查找。
- 数据结构之单链表(尾插法)查找、插入和删除
- 【数据结构】单链表(一)单链表的定义,插入,删除和查找操作
- 【数据结构】单链表—求链表中间节点(只遍历一次链表)— 快慢指针
- 数据结构(四)之单链表查找中间结点
- 数据结构-单链表查找按序号查找
- 【数据结构基础】链表的倒数第M个结点的查找
- 数据结构:头插法、尾插法创建单链表,求链表长度、查找、插入、删除、合并
- 【数据结构作业二】写出单链表结点的结构体类型定义及查找、插入、删除算法,并以单链表作存储结构,实现有序表的合并
- 数据结构-单链表查找按值查找
- C语言-数据结构-双链表插入查找
- 【学习点滴-数据结构-单链表】 求单链表的中间元素和倒数第k个元素
- 结构之美:查找单链表指定位置结点的数据
- 数据结构(四)之单链表查找中间结点
- 数据结构之查找
- 数据结构之链表(一)
- 数据结构——基本数据结构之链表
- 数据结构之单向链表