试设计一个算法,用尽可能少的辅助空间将顺序表中前m个元素和后n个元素进行整体互换。 这个程序引用部分有问题,希望大家给指教下
#include<stdio.h>const LIST_INIT_SIZE=80; // 线性表存储空间的初始分配量
const LISTINCREMENT=10; // 线性表存储空间的分配增量
typedef char ElemType;
typedef struct
{
ElemType *elem; // 存储空间基址
int length; // 当前长度
int listsize; // 当前分配的存储容量
int incrementsize; // 约定的增补空间量
}SqList;
// 构造一个空的线性表
void InitList_Sq(SqList &L) {
L.elem= new ElemType[LIST_INIT_SIZE];
if(!L.elem) printf("分配失败\n");
L.length=0;
L.listsize=LISTINCREMENT;}
void InputElem_Sq(SqList &L)
{
int i;
char ch;
printf("a string:\n");
for(i=0;(i<100)&&((ch=getchar())!=EOF)&&(ch!='\n');i++)
{
L.elem[i]=(char)ch;
}
L.elem[i++]='\0';
L.length=i-1;
printf("input was :%s,L.length=%d\n",L.elem,L.length);
}
void exchange1(SqList &A,int m,int n)
{ int w,k,j;
for(k=1;k<=n;k++)
{
w=A.elem[m+k-1];
for(j=m+k-1;j>=k;j--)
A.elem[j]=A.elem[j-1];
A.elem[k-1]=w;
}
}
void main()
{
int i,m,n;
SqList La;
InitList_Sq(La);
printf("Input the numbers of La");
exchange1(&La,m,n);
for(i=0;i<m+n;i++)
printf("%c",La.elem[i]);
}