当前位置: 首页 > news >正文

【数据结构】PTA 求链表的倒数第m个元素 C语言

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

AC代码:

ElementType Find( List L, int m ){List L0=L;//算出总的结点数int sum;if(!L0) sum=0;else sum=1;while(L0->Next){L0=L0->Next;sum++;}//倒数换成正数m=sum-m+1;if(m<=0) return ERROR;int i;for(i=2;i<=m;i++){L=L->Next;}return L->Data;
}


http://www.mrgr.cn/news/9047.html

相关文章:

  • PyTorch 基础学习(13)- 混合精度训练
  • 异步编排利器:使用CompletableFuture优化服务页面响应速度
  • 一文搞懂不确定性原理
  • 单例模式的实现
  • Github 2024-08-20 Python开源项目日报 Top10
  • python循环访问excel的某一列从某行开始的内容
  • 前端网格布局display: grid;
  • C++函数重载(二)
  • RocketMQ~刷盘机制、主从复制方式、存储机制
  • 什么是主机监控审计系统?三款热门计算机监控审计系统推荐!
  • ZooKeeper 的特性及其在分布式系统中的配置中心的应用
  • 详细描述Android中的四大组件
  • C# UserControl、Dockpanel和DockContent、Cursor、
  • How to stream video in a loop via RTP using ffmpeg?
  • docke进阶---镜像迁移、容器的ip地址、端口映射和持久化
  • java socket通讯
  • 下载官方llama
  • UE管理内容 —— FBX Scene Import
  • Java面试题--JVM大厂篇之JVM大厂面试题及答案解析(4)
  • 多人协作开发git merge合并功能出现冲突时解决思路