4-1 单链表逆转 (20分)
来源:互联网 发布:matlab 2016b mac安装 编辑:程序博客网 时间:2024/06/11 07:38
本题要求实现一个函数,将给定的单链表逆转。函数接口定义:List Reverse( List L );其中List结构定义如下:typedef struct Node *PtrToNode;struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个结点的指针 */};typedef PtrToNode List; /* 定义单链表类型 */L是给定单链表,函数Reverse要返回被逆转后的链表。裁判测试程序样例:#include <stdio.h>#include <stdlib.h>typedef int ElementType;typedef struct Node *PtrToNode;struct Node { ElementType Data; PtrToNode Next;};typedef PtrToNode List;List Read(); /* 细节在此不表 */void Print( List L ); /* 细节在此不表 */List Reverse( List L );int main(){ List L1, L2; L1 = Read(); L2 = Reverse(L1); Print(L1); Print(L2); return 0;}/* 你的代码将被嵌在这里 */输入样例:51 3 4 5 2输出样例:12 5 4 3 1
———-具体实现代码
//注意该题是不带头结点的链表List Reverse( List L ){ if (L == NULL){return L;} List current,after,tempHead; tempHead = L; current = L->Next; L->Next = NULL; //没考虑到,程序判断运行超时; while (current){ after = current->Next; current->Next = tempHead; tempHead = current; current = after; } L = tempHead; return L;}
另外附上带头结点的代码,未经测试:
/* 这是带头结点的程序代码,PAT本题是不带头结点,区别处理是不带头结点的代码需要另外的临时 变量来保存头指针*/List Reverse1( List L ){ if(L == NULL) return L; List current = L->Next; List after; L->Next = NULL; while(current != NULL){ after = current->Next; current->Next = L->Next; L->Next = current; current = after; } return L;//要返回L,因为函数体需要返回值,这个与传入地址函数体类型是void,但是地址还是改变了注意区别理解,其实本质相同}
0 0
- 4-1 单链表逆转 (20分)
- 4-1 单链表逆转 (20分)
- 4-1 单链表逆转 (20分)
- 4-1 单链表逆转 (20分)
- 4-1 单链表逆转 (20分)
- 4-1 单链表逆转 (20分)
- 4-1 单链表逆转 (20分)
- PTA数据结构与算法题目集(中文)4-1 单链表逆转 (20分)
- 4-1单链表逆转
- 4-1 单链表逆转
- 4-1 单链表逆转
- 王仕鹏压哨三分 中国1分逆转晋级
- 6-1 PTA 单链表逆转
- 6-1 单链表逆转(20 point(s))
- 单链表逆转
- 逆转单链表
- 单链表逆转
- 逆转单链表
- Qt5.1 + vs2012 OpenGL
- PostGresql 服务未监听
- 短信猫 rxtx smslib出错
- 设计模式---状态模式Java示例实现
- dubbo本地缓存提供者信息配置问题
- 4-1 单链表逆转 (20分)
- jsp之简单用户登录(1)
- 数组作为函数参数
- 函数第一节
- Ubuntu 14.04搭建Android5.1开发环境和编译
- 'NSURL' is not implicitly convertible to 'URL'; did you mean to use 'as' to explicitly convert?异常
- 百度地图api 实例 整个自动提示 并计算两地的行驶距离
- Codevs1531 山峰 单调栈
- 使用Activator.CreateInstance完善简单工厂