YTU 2991: 链表节点逆置(线性表)
来源:互联网 发布:淘宝箭牌官方旗舰店 编辑:程序博客网 时间:2024/05/22 00:27
2991: 链表节点逆置(线性表)
时间限制: 1 Sec 内存限制: 128 MB提交: 14 解决: 6
题目描述
设计一个算法,将一个带头节点的数据域依次为a1,a2,…,an(n>=3)的单链表的所有节点逆置,即第一个节点的数据域变为an,……,最后一个节点的数据域变为a1,请尽量采用较优算法,时间复杂度为O(n)最佳!
线性表的定义为
typedef struct Node
{
ElemType data;
struct Node *next;
} SqList;
需编写的算法为
SqList *Deal(SqList *p);
注意:只需提交你所编写的算法
输入
输入的第一行包含一个整数,代表单链表的长度。接下来的一行是链表每个节点的数据域的值。
输出
输出包含一行,即逆置节点后链表的每个节点的数值。
样例输入
101 2 3 4 5 6 7 8 9 10
样例输出
10 9 8 7 6 5 4 3 2 1
提示
1、请使用C++编译并提交
2、只需提交Deal算法
迷失在幽谷中的鸟儿,独自飞翔在这偌大的天地间,却不知自己该飞往何方……
#include <stdio.h>#include <stdlib.h>typedef int ElemType;typedef struct Node{ ElemType data; struct Node *next;} SqList;SqList *Init(int n){ if(n<3)exit(-1); SqList *head=NULL,*p1,*p2; head=(SqList*)malloc(sizeof(SqList)); p1=p2=(SqList*)malloc(sizeof(SqList)); for(int i=0; i<n; i++) { if(i==0)head->next=p1; else p2->next=p1; scanf("%d",&p1->data); p2=p1; p1=(SqList*)malloc(sizeof(SqList)); } p2->next=NULL; return head;}void Print(SqList *p){ p=p->next; while(p->next!=NULL) { printf("%d ",p->data); p=p->next; } printf("%d\n",p->data);}SqList *Deal(SqList *p){ SqList *a=p->next,*b=p->next->next,*c=p->next->next->next,*head=p; while(true) { if(a==p->next)a->next=NULL; b->next=a; if(c->next==NULL) { c->next=b; break; } a=b,b=c,c=c->next; } head->next=c; return head;}int main(){ int n; SqList *head=NULL; scanf("%d",&n); head=Init(n); head=Deal(head); Print(head); return 0;}
1 0
- YTU 2991: 链表节点逆置(线性表)
- YTU 2203: 最小节点(线性表)
- 【数据结构】链表 YTU 2201 逆置线性表(线性表)
- YTU-OJ-Problem A: 最小节点(线性表)
- YTU-OJ-熟悉题型——填空题(删除线性表节点)
- YTU 2601: 熟悉题型——填空题(删除线性表节点)
- YTU 2990: 链表的基本运算(线性表)
- YTU 2209: 建立链表(线性表)
- YTU 2987: 调整表中元素顺序(线性表)
- YTU 2989: 顺序表基本运算(线性表)
- YTU 2986: 删除区间内的元素(线性表)
- 节点插入(线性表)
- 节点插入(线性表)
- 线性表节点
- YTU-OJ-单链表(线性表)-合并两个升序链表后降序输出
- 删除线性表节点(线性表)
- 删除线性表节点(线性表)
- 删除线性表节点(线性表)
- JVM内幕:Java虚拟机详解
- c++作业3-多分数段函数求值、定期存款利息计算器、本月有几天?
- Linux route命令
- 3.1.9 变长参数
- C++第三次实验项目-个人所得税计算器
- YTU 2991: 链表节点逆置(线性表)
- 第五周项目:长方柱类
- C++上机实验3-个人所得税计算器
- 核电站问题转载自saltless原创
- 水晶报表公式字段应用处理null方法
- 3.1.10 错误处理
- [LintCode] 落单的数II Single Number II
- Java进阶(二十六)公司项目开发知识点回顾
- Spring基于注解TestContext 测试框架使用详解