内存:128  时间:1

题目描述

设计一个算法,将一个带头节点的数据域依次为a1,a2,…,an(n>=3)的单链表的所有节点逆置,即第一个节点的数据域变为an,……,最后一个节点的数据域变为a1,请尽量采用较优算法,时间复杂度为O(n)最佳!

线性表的定义为
typedef struct Node
{
    ElemType data;
    struct Node *next;
} SqList;
 
需编写的算法为
SqList *Deal(SqList *p);
 


注意:只需提交你所编写的算法

输入

输入的第一行包含一个整数,代表单链表的长度。接下来的一行是链表每个节点的数据域的值。

输出

输出包含一行,即逆置节点后链表的每个节点的数值。

样例输入

10
1 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>
int main()
{
	int i,n,t,a[5];
	scanf("%d",&n);
	for(i=0;i<5;i++)scanf("%d",&a[i]);
	for(i=0;i<n/2;i++)
	t=a[i],a[i]=a[n-1-i],a[n-1-i]=t;
	for(i=0;i<5;i++)
		printf("%d",a[i]);
	return 0;
}

代码来源于互联网,仅供参考!