求链表的倒数第m个元素
来源:互联网 发布:小米网络放大器怎么用 编辑:程序博客网 时间:2024/05/30 04:38
习题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;}/* 你的代码将被嵌在这里 */
输入样例:
51 2 4 5 63
输出样例:
41 2 4 5 6
#include <stdio.h>#include <stdlib.h>#define ERROR -1#define N 20typedef 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 );ElementType Length( List L);int main(){ List L; int m; L = Read(); scanf("%d", &m); printf("%d\n", Find(L,m)); Print(L); return 0;}ElementType Find( List L, int m ){int i=0,n, findWhich;List h,p;h=L;p=h->Next;n = Length(L);findWhich = n-m+1;/* 将倒数转换为正数第几个数*/while(p){i++;if(i==findWhich)break;p=p->Next;}return p->Data;}ElementType Length( List L){int len=0;List h,p;h=L;p=h->Next;while(p){len++;p=p->Next;}return len;}List Read(){ int a[N],i,n; List h,p,q; scanf("%d", &n); for(i=0;i<n;i++) a[i]=2*i+1; for(i=0;i<n;i++) printf("%d ", a[i]); printf("\n"); h=(List)malloc(sizeof(struct Node)); h->Next=NULL; p=q=h; for(i=0;i<n;i++){ q=(List)malloc(sizeof(struct Node)); q->Data=a[i]; q->Next=NULL; p->Next=q; p=q; } p->Next=NULL; return h; } void Print( List L ){ List p; p=L->Next; while(p){ printf("%d ", p->Data); p=p->Next; } printf("\n"); }
阅读全文
0 0
- 求链表的倒数第m个元素
- 6-5 求链表的倒数第m个元素
- 删除单链表的倒数第m个元素
- 找出单向链表的倒数第m个元素
- 找出单向链表的倒数第m个元素
- 找出单向链表的倒数第m个元素
- 找出单向链表的倒数第m个元素
- 找到链表的倒数第m个元素
- 4、删除单链表的倒数第m个元素
- 查找单链表中倒数第m个元素
- 输出链表中倒数第m个元素
- 寻找单链表倒数第m个元素
- 寻找倒数第m个元素
- 浙大版数据结构习题3.5 求链表的倒数第m个元素
- 链表中的倒数第m个元素
- PTA试题_求单链表倒数第m个元素
- 数据结构 - 如何删除单向链表的倒数第m个元素?
- 求单链表的倒数第k个元素
- [Leetcode] 221. Maximal Square 解题报告
- Android三方分享总结
- codeforces 455E Function && 51nod 1488 帕斯卡小三角
- 深入分析Spring 与 Spring MVC容器
- 机器学习算法线上部署方法
- 求链表的倒数第m个元素
- 图片的放大模态框
- 数组、List和ArrayList的区别
- IOS和android手机测试注意点
- Android常用开源项目(二十七)
- C#多线程
- Thinkphp内置的一个中英文字符串截取函数,显示省略号
- 什么时候使用CountDownLatch
- Node.js加载第三方SDK作为node_modules模块