博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
习题3.5 求链表的倒数第m个元素(20 分)浙大版《数据结构(第2版)》题目集...
阅读量:4987 次
发布时间:2019-06-12

本文共 1084 字,大约阅读时间需要 3 分钟。

请设计时间和空间上都尽可能高效的算法,在不改变链表的前提下,求链式存储的线性表的倒数第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 
#include
#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;}/* 你的代码将被嵌在这里 */

输入样例:

51 2 4 5 63

输出样例:

41 2 4 5 6 代码:
ElementType Find( List L, int m ){    int a[100000];    int cnt = 0;    L = L->Next;    while(L)    {        a[cnt++] = L->Data;        L = L->Next;    }    if(m>cnt)return ERROR;    else return a[cnt-m];}

 

转载于:https://www.cnblogs.com/8023spz/p/7636009.html

你可能感兴趣的文章
第八章 虚拟机字节码执行引擎(待续)
查看>>
HDU 5024
查看>>
MVVMLight消息通知实现机制详解(一)
查看>>
C#验证类 可验证:邮箱,电话,手机,数字,英文,日期,身份证,邮编,网址,IP (转)
查看>>
go——标准命令
查看>>
装饰器
查看>>
在react/redux中使用Immutable
查看>>
hive的数据导入
查看>>
STM32的中断系统
查看>>
Java复习之Annotation
查看>>
在Java 7里如何对文件进行操作
查看>>
Python爬虫一步步抓取房产信息
查看>>
Hbase shell基本操作
查看>>
聊聊我怎么系统学习Linux技能并快速提高的
查看>>
shell第四篇(上)
查看>>
Leetcode题解(26)
查看>>
C# ASP.NET MVC HtmlHelper用法大全
查看>>
Orcale and 逻辑运算符的特殊情况
查看>>
python学习笔记-学习大纲
查看>>
Java中File类中方法应用的两个例子
查看>>