6-3 求链表的倒数第m个元素 (20 分)

请设计时间和空间上都尽可能高效的算法,在不改变链表的前提下,求链式存储的线性表的倒数第m(>0)个元素。

函数接口定义:

ElementType Find( List L, int m );

其中List结构定义如下:

typedef struct Node *PtrToNode;
struct Node {ElementType Data; /* 存储结点数据 */PtrToNode   Next; /* 指向下一个结点的指针 */
};
typedef PtrToNode List; /* 定义单链表类型 */

L是给定的带头结点的单链表;函数Find要将L的倒数第m个元素返回,并不改变原链表。如果这样的元素不存在,则返回一个错误标志ERROR。

裁判测试程序样例:

#include <stdio.h>
#include <stdlib.h>#define ERROR -1typedef int ElementType;
typedef struct Node *PtrToNode;
struct Node {ElementType Data;PtrToNode   Next;
};
typedef PtrToNode List;List Read(); /* 细节在此不表 */
void Print( List L ); /* 细节在此不表 */ElementType Find( List L, int m );int main()
{List L;int m;L = Read();scanf("%d", &m);printf("%d\n", Find(L,m));Print(L);return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

5
1 2 4 5 6
3

输出样例:

4
1 2 4 5 6

ElementType Find( List L, int m )
{List a = L->Next;List b = L->Next;while(b&&m--){b = b->Next;}if(m>0)return ERROR;while(b){a = a->Next;b = b->Next;}return a->Data;
}

6-3 求链表的倒数第m个元素相关推荐

  1. 求链表的倒数第m个元素

    习题3.5 求链表的倒数第m个元素 (20 分) 请设计时间和空间上都尽可能高效的算法,在不改变链表的前提下,求链式存储的线性表的倒数第m(>0)个元素. 函数接口定义: ElementType ...

  2. 6-7 求链表的倒数第m个元素 (25 分)

    请设计时间和空间上都尽可能高效的算法,在不改变链表的前提下,求链式存储的线性表的倒数第m(>0)个元素. 函数接口定义: ElementType Find( List L, int m ); 其 ...

  3. 习题3.5 求链表的倒数第m个元素 (20 分)

    请设计时间和空间上都尽可能高效的算法,在不改变链表的前提下,求链式存储的线性表的倒数第m(>0)个元素. 函数接口定义: ElementType Find( List L, int m ); 其 ...

  4. 链表题目--2 求链表的中间结点 和 求链表中倒数第k个结点

    求链表的中间结点 思路 一个走两步,一个走一步.一个走到尾,另外一个就走到了中间 /*** Definition for singly-linked list.* struct ListNode {* ...

  5. 求链表的倒数第N个节点

    最近看一本书上有求链表的倒数第N个节点,简单实现了下 链表,实现方案如下 1.不借助链表长度顺序遍历倒数第N个节点 GetReserveN就是如此实现. 2.当然如果链表记录了节点长度也可以直接正序遍 ...

  6. 如何找出单链表中倒数第K个元素

    第一种方法 为了找出单链表的倒数第K个元素,需要知道这个单链表的长度是多少,就是需要遍历一遍这个单链表,长度为n,倒数第k个,就是单链表的第(n-k)个元素 public Node findLastK ...

  7. 数据结构 如何删除单向链表的倒数第m个元素

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 建立tm ...

  8. 单链表输出倒数第k个元素

    这个算法已经有不少人写过了,但是为了考研后期复习还是在此记录一下自己的心得. 方法有如下几种: 1. 遍历单链表两次,第一次获取链表总长度,第二次寻找倒数第K个元素就很简单了.但是该方法需要遍历两次链 ...

  9. 如何快速查看单链表倒数第K个元素

    大致思路:只需要一次遍历即可查找到倒数第k个元素.由于单链表只能从头到尾依次访问链表的各个节点,因此,如果要找到链表的倒数第k个元素的话,也只能从头到尾进行遍历查找,在查找过程中,设置两个指针,让其中 ...

最新文章

  1. sqlserver附加数据库错误823的解决方案
  2. 【计算理论】可判定性 ( 丘奇-图灵论题 | 可判定性引入 | 图灵机语言 | 图灵机结果 | 判定机 | 部分函数与全部函数 | 可判定性定义 )
  3. Python获取当前目录和上级目录
  4. 多图技术贴:深入浅出解析大数据平台架构
  5. 向Spark集群提交任务
  6. wpf treeview使用expanded事件出错的问题
  7. 每日一题/007/级数/设a_n=1-1/2+1/3- ... + (-1)^(n-1)*1/n,求 lim_{n\to\infty}a_n
  8. 【UE4(虚幻)】学习笔记(六)----蓝图接口、事件分发器、子弹击打不同物体会有不同效果的实现思路、 数据表的使用与背包框架的搭设
  9. 无法显示计算机列表,W7系统Internet Explorer无法显示该页面
  10. 为什么upupoo显示服务器维护中,首先,电脑能正常上网,有的网站可以上传图片,但就是不能显示上传图片的功能按钮,网页打开都正常。...
  11. 8个LED灯分别以不同频率闪烁
  12. 中断处理过程示意图_中断和中断处理流程
  13. matlab 多项式降幂,MATLAB自动将向量元素按降幂顺序分配给各系数值.PPT
  14. 数据库视图有什么作用
  15. 面试自我介绍5句话公式
  16. 【40-系统性能压力测试基本概念-相关性能指标HPSTPSQPSRT-安装Jmeter教程-JMeter测试流程-线程组-取样器-监视器-测试商城首页-JMeter Address 占用的问题】
  17. iOS6和iOS7代码的适配(2)——status bar
  18. Unity 网络摄像设备 - WebCamDevice
  19. 京瓷4501i打印机扫描步骤_京瓷网络扫描发送到SMB设置步骤,win7系统电脑参考方法...
  20. 设计没素材没灵感,这些网站可以帮你快速找到你需要的照片

热门文章

  1. nodejs源码_格物致知记一次nodejs源码分析的经历
  2. 聚焦 | 阿里灵杰AI工程化峰会来了
  3. Knative 快捷操作命令 Kn 介绍
  4. 车主无忧:为什么放弃开源Kafka?
  5. python打卡记录去重_Python笔记记录
  6. 新手教程:用像素游戏制作大师MV开发游戏(一)
  7. 移动游戏市场爆发背后的游戏引擎战局
  8. 用Unity开发一款塔防游戏(一):攻击方设计
  9. 软件技术专业-就业提示(IT类详细岗位分化)
  10. mysql 如何清除sql缓存