天天看点

线性表转置

#include <stdio.h>

#define M 100

//定义顺序表

typedef struct {

    int len;

    int a[M];

}SeqList;

//线性表初始化

void init_posList(SeqList *L){

    L->len = 0;

}

//插入x到L->a[i]

int insert_posList(SeqList *L,int i,int x){

    //1、把L->a[i]的位置留出

    int j;

    for(j = L->len-1;j >= i;j--)

        L->a[j+1] = L->a[j];

    //2、把x赋值给L->a[i]

        L->a[i] = x;

    //3、L->len++;

        L->len++;

}

//线性表转置

void transPorsition(SeqList *L){

    int i = 0,j = L->len-1,r;

    for(;i < j;i++,j--){

        r = L->a[i];

        L->a[i] = L->a[j];

        L->a[j] = r;

    }

    print_posList(L);

}

//打印结果

void print_posList(SeqList *L){

    int i = 0;

    while(i < L->len){

        printf(" %d",L->a[i]);i++;

    }

    printf("\n");

}

int main()

{

    SeqList L;

    int x,i = 0;

    printf("input numbers,end by -1:");

    scanf("%d",&x);

    init_posList(&L);

    while(x != -1){

        insert_posList(&L,i,x);i++;

        scanf("%d",&x);

    }

    print_posList(&L);

    transPorsition(&L);

    return 0;

}