请设计时间和空间上都尽可能高效的算法,在不改变链表的前提下,求链式存储的线性表的倒数第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 )

{

int i,count = 0;

List tmp = L;

if( L->Next == NULL )

{

return ERROR;

}

while(tmp)

{

tmp = tmp->Next;

count++;

}

m %= count;

for( i = 0; i < count - m; i++ )

{

L = L->Next;

}

return L->Data;

}

习题3.5 求链表的倒数第m个元素 (20 分)相关推荐

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

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

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

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

  3. 6-3 求链表的倒数第m个元素

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

  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. 2、求100以内的素数之和。(20分)

    题目: /* 2.求100以内的素数之和.(20分) */ 代码: public class Two207 {public static void main(String[] args) {int s ...

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

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

  9. LeetCode19删除链表的倒数第N个节点20有效的括号

    维护不易,还请点赞支持,微信搜索bigsai 回复进群一起打卡. 19删除链表的倒数第N个节点 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1-> ...

最新文章

  1. 不能装载文档控件。请在检查浏览器的选项中检查浏览器的安全设置_Excel基础—文件菜单之设置信息...
  2. C# WPF MVVM项目实战(进阶①)
  3. 显卡mx150和230哪个好_建模渲染用专业图形显卡和游戏显卡哪个更好?
  4. 如果华为自研的芯片无法给华为手机带来更高的性价比,那么华为自研芯片给消费者带来的意义是什么呢?
  5. java应用uploadify 3.2丢失session
  6. 数组去重的JavaScript实现
  7. 华中师范大学计算机学院郑,郑年亨-华中师范国家数字化研究中心
  8. 华为手机楷体字体下载_正楷字体下载正楷字体官方下载[字体下载]-华军软件园...
  9. ubuntu篇---文件压缩与解压
  10. web之线性渐变,径向渐变,重复渐变
  11. 关于 SwiperJS 的初次使用
  12. 赠书 | 供应链金融模式有哪些?区块链在供应链金融中如何应用?
  13. 对四元数解算姿态的理解
  14. 【GitHub】Your account has been flagged.解决方法
  15. [计算机网络]第二章——应用层
  16. Fresh gizmo
  17. JavaScript中的jQuery
  18. 颤抖吧(C++) kkmd66
  19. 无法启动此程序因为计算机中丢失d3dcompiler_47.dll
  20. 自定义镜像上传阿里云

热门文章

  1. 设计模式---状态模式
  2. 实例3 输出由“*”组成的三角形
  3. ABP官方文档翻译 1.5 多租户
  4. LeetCode-Single Number
  5. 不缓存调用js的方法
  6. Java基础之synchronized的讲解
  7. 【python】 邮件发送-----zmail
  8. SSAS的MDX的基础函数(三),及聚合函数
  9. 软件测试—软件测试基础知识—测试用例设计的方法之场景法、正交试验法和错误推断法
  10. docker hub push_Docker系列-(2) 镜像制作与发布