习题3.5 求链表的倒数第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 )
{
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 分)相关推荐
- 6-7 求链表的倒数第m个元素 (25 分)
请设计时间和空间上都尽可能高效的算法,在不改变链表的前提下,求链式存储的线性表的倒数第m(>0)个元素. 函数接口定义: ElementType Find( List L, int m ); 其 ...
- 求链表的倒数第m个元素
习题3.5 求链表的倒数第m个元素 (20 分) 请设计时间和空间上都尽可能高效的算法,在不改变链表的前提下,求链式存储的线性表的倒数第m(>0)个元素. 函数接口定义: ElementType ...
- 6-3 求链表的倒数第m个元素
6-3 求链表的倒数第m个元素 (20 分) 请设计时间和空间上都尽可能高效的算法,在不改变链表的前提下,求链式存储的线性表的倒数第m(>0)个元素. 函数接口定义: ElementType F ...
- 链表题目--2 求链表的中间结点 和 求链表中倒数第k个结点
求链表的中间结点 思路 一个走两步,一个走一步.一个走到尾,另外一个就走到了中间 /*** Definition for singly-linked list.* struct ListNode {* ...
- 求链表的倒数第N个节点
最近看一本书上有求链表的倒数第N个节点,简单实现了下 链表,实现方案如下 1.不借助链表长度顺序遍历倒数第N个节点 GetReserveN就是如此实现. 2.当然如果链表记录了节点长度也可以直接正序遍 ...
- 如何找出单链表中倒数第K个元素
第一种方法 为了找出单链表的倒数第K个元素,需要知道这个单链表的长度是多少,就是需要遍历一遍这个单链表,长度为n,倒数第k个,就是单链表的第(n-k)个元素 public Node findLastK ...
- 2、求100以内的素数之和。(20分)
题目: /* 2.求100以内的素数之和.(20分) */ 代码: public class Two207 {public static void main(String[] args) {int s ...
- 数据结构 如何删除单向链表的倒数第m个元素
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 建立tm ...
- LeetCode19删除链表的倒数第N个节点20有效的括号
维护不易,还请点赞支持,微信搜索bigsai 回复进群一起打卡. 19删除链表的倒数第N个节点 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1-> ...
最新文章
- 不能装载文档控件。请在检查浏览器的选项中检查浏览器的安全设置_Excel基础—文件菜单之设置信息...
- C# WPF MVVM项目实战(进阶①)
- 显卡mx150和230哪个好_建模渲染用专业图形显卡和游戏显卡哪个更好?
- 如果华为自研的芯片无法给华为手机带来更高的性价比,那么华为自研芯片给消费者带来的意义是什么呢?
- java应用uploadify 3.2丢失session
- 数组去重的JavaScript实现
- 华中师范大学计算机学院郑,郑年亨-华中师范国家数字化研究中心
- 华为手机楷体字体下载_正楷字体下载正楷字体官方下载[字体下载]-华军软件园...
- ubuntu篇---文件压缩与解压
- web之线性渐变,径向渐变,重复渐变
- 关于 SwiperJS 的初次使用
- 赠书 | 供应链金融模式有哪些?区块链在供应链金融中如何应用?
- 对四元数解算姿态的理解
- 【GitHub】Your account has been flagged.解决方法
- [计算机网络]第二章——应用层
- Fresh gizmo
- JavaScript中的jQuery
- 颤抖吧(C++) kkmd66
- 无法启动此程序因为计算机中丢失d3dcompiler_47.dll
- 自定义镜像上传阿里云