注册 登录
编程论坛 数据结构与算法

试设计一个算法,用尽可能少的辅助空间将顺序表中前m个元素和后n个元素进行整体互换。 这个程序引用部分有问题,希望大家给指教下

n309619949 发布于 2014-03-03 22:50, 1334 次点击
#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]);
        }
0 回复
1