顺序表的逆置

暑假都快结束了,才想起来把数据结构的笔记补一下。

题目

编写程序实现对顺序表的逆置。

部分代码

void Inverse(SeqList *L, int mSize) {
    int i, temp;
    for (i = 0; i < mSize / 2; i++) {
        temp = L->element[i];
        L->element[i] = L->element[mSize - 1 - i];
        L->element[mSize - 1 - i] = temp;
    }
}

完整程序

#include<stdio.h>
#include<stdlib.h>
#define ERROR 0
#define OK 1
typedef int ElemType;
typedef int Status;

typedef struct {
    int n;
    int maxLength;
    ElemType *element;
}SeqList;


Status Init(SeqList *L, int mSize);
Status Output(SeqList L);
void Inverse(SeqList *L, int mSize);
Status Insert(SeqList *L, int i, ElemType x);
// Status Delete(SeqList *L,int i);
// void Destory(SeqList *L);


// 顺序表初始化
Status Init(SeqList *L, int mSize) {
    L->maxLength = mSize;
    L->n = 0;
    L->element = (ElemType*)malloc(sizeof(ElemType)*mSize);
    if(!L->element)
        return ERROR;
    return OK;
}

void Inverse(SeqList *L, int mSize) {
    int i, temp;
    for (i = 0; i < mSize / 2; i++) {
        temp = L->element[i];
        L->element[i] = L->element[mSize - 1 - i];
        L->element[mSize - 1 - i] = temp;
    }
}

Status Insert(SeqList *L, int i, ElemType x) {
    int j;
    if (i<-1 || i>L->n - 1)
        return ERROR;
    if (L->n == L->maxLength)
        return ERROR;
    for (j = L->n - 1; j > i; j--) {
        L->element[j + 1] = L->element[j];
    }
    L->element[i + 1] = x;
    L -> n = L->n + 1;
    return OK;
}


// 顺序表输出
Status Output(SeqList L) {
    int i;
    if (!L.n)
        return ERROR;
    for (i = 0; i <= L.n - 1; i++)
        printf("%d ", L.element[i]);  //从前往后逐个输出元素
    return OK;
}

/*
Status Delete(SeqList *L,int i){
    int j;
    if (i<0 || i>L->n - 1)
        return ERROR;
    if (!L->n)
        return ERROR;
    for (j =i+1; j < L->n; j++) {
        L->element[j - 1] = L->element[j];
    }
    L -> n --;
    return OK;
}
*/

/*
void Destory(SeqList *L){
    (*L).n=0;
    (*L).maxLength=0;
    free((*L).element);
}
*/

int main()
{
    int i,x,nn;
    scanf("%d",&nn);
    //printf("\n");
    SeqList list;
    Init(&list, nn);  // 对线性表初始化
    for (i = 0; i < nn; i++) {
        scanf("%d",&x);
        Insert(&list, i - 1, x);
    }
    Output(list);
    Inverse(&list,nn);
    printf("\n");
    Output(list);
    printf("\n");
    // Delete(&list,0);
    // Destory(&list);
}

实验结果

这里写图片描述

版权声明:本文为博主原创文章,如有错误,恳请大家在评论区指出,在下不胜感激~如要转载注明出处即可~
本文首发于个人博客:Wonz の Blog

猜你喜欢

转载自blog.csdn.net/Wonz5130/article/details/82263098