解题思路:
这道题要求用数组和单链表两种储存形式完成线性表就地逆置的算法,即只能有常数量级的空间开销。
数组的拟制很简单,就从中间分开前后交换,注意元素个数为奇偶时中间位置的计算。
单链表采用头插法,将原链表顺序插入即的到其逆序结果,画图可使链表算法更好理解。
具体操作见代码,代码中有部分注释。
题解代码:
#include <stdio.h>
#include <stdlib.h>
//以数组作为储存结构
void CreatArray(int n, int A[]){
//创建数组
for(int i=0;i<n;i++){
scanf("%d",&A[i]);
}
}
void InversionArray(int n, int A[]){
//数组的逆置函数
for(int i=0