查找链表倒数的节点
来源:互联网 发布:ubuntu 无法复制 编辑:程序博客网 时间:2024/06/05 05:00
虽然马上要实习了,但是基本的东西不要忘了,把以前一些东西继续温故知新。对于查找链表倒数的节点这个问题,就比较经典了,老生常谈的。大家都知道,最经典的解法就是首先找到k-1个,然后两个指针,一前一后跑,知道后面的指针跑到最后一个,前面的指针也就是指向了倒数第k个节点了。
不过在这里需要注意以下几种情况。
一、当链表为空时
二、当输入非法时,例如输入小于等于0
三、当输入的k大于链表的总节点数时
这些情况在源代码中都有说明,如果有问题,请大家及时提醒我更正。
/*这是一道经典的面试题,求得链表中的第倒数第k个节点*/#include<stdio.h>#include<stdlib.h>typedef struct data{ int value; struct data * next;} * Node;/*开始查找倒数第k个*/Node search_k_Node(Node head,int k){ Node front,rear = head; int i; if(rear == NULL){ printf("此链表为空链表"); return NULL; } if(k <= 0){ printf("输入位置不合法"); return NULL; } for(i = 1;rear != NULL && i< k; i++){ /*这里根据i的初始值不容,选择不同的结束条件,还有,如果链表带头节点,也需要分情况*/ rear = rear->next; } //如果rear等于NULL,并且i不等于K,证明输入的k大于节点总数 if(NULL == rear && i <= k){ printf("输入的k大于总节点数"); return NULL; } front = head; while(rear->next != NULL){ rear = rear->next; front = front->next; } return front;}//输出void outPuts(Node head){ Node p; for(p = head; p != NULL; p= p->next){ printf("%d ",p->value); }}//初始化Node initLinkedList(){ Node head = NULL,p = NULL,q; int i; for(i = 1; i<=10;i++){ if(i == 1){ head = (Node)malloc(sizeof(struct data)); head->next = NULL; head->value = i; p = head; } else{ q = (Node)malloc(sizeof(struct data)); q->next = NULL; q->value = i; p->next = q; p=q; } } return head;}int main(void){ Node head,result; int k; printf("请输入要求的的倒数第k个节点的k:"); scanf("%d",&k); head = initLinkedList(); outPuts(head); result = search_k_Node(head,k); if(NULL != result){ printf("结果是:%d",result->value); } return 0;}
加油坚持每一天!
0 0
- 查找链表倒数的节点
- 【C语言】查找链表的中间节点及倒数第K个节点
- 查找链表倒数第K个节点
- 查找链表倒数第k个节点
- 反转链表和查找倒数第K个节点
- 翻转链表查找链表的倒数第k个节点位运算加法
- 微软,Google面试题 (9) —— 查找链表的倒数第K个节点
- C实现简单单向链表,一次遍历查找倒数第k个节点的值
- 查找单链表的倒数第k个节点,要求只能遍历一次链表
- 查找单链表的倒数第k个节点,要求只能遍历一次链表
- 链表--查找单链表的倒数第k个节点,要求只能遍历一次链表
- 查找单链表的倒数第k个节点,要求只能遍历一次链表
- 查找单链表的倒数第k个节点,要求只能遍历一次链表
- 数据结构之链表面试题汇总(一)--查找单向链表的中间节点、倒数第K个节点
- 查找单链表的倒数第k个节点,要求只能遍历一次链表(C语言)
- 剑指offer 15---查找单链表的倒数第k个节点,要求只能遍历一次链表
- 逆置、翻转链表/查找单链表的倒数第k个节点/A+B不使用四则运算++ -- 等
- 逆置/反转单链表+查找单链表的倒数第k个节点,要求只能遍历一次链表
- Java中 intValue,parseInt,Valueof 这三个关键字的区别
- CentOS7搭建SVN服务器
- Android网络之HttpUrlConnection和Socket关系解析
- c++开坑
- 371. Sum of Two Integers
- 查找链表倒数的节点
- POJ2533-Longest Ordered Subsequence(LIS)
- python pil 第三方库实战之三:ImageFilter滤镜小试
- #Paper Reading# Graph Regularized Non-negative Matrix Factorization By Maximizing Correntropy
- Codeforces 387E George and Cards(二分+树状数组)
- 22.Identify the logical structure that will never have more than one data segment created for it.
- Ubuntu下lamp环境搭建【学习笔记】
- 对vector等STL容器进行排序
- 进程间通信messager