删除顺序表L中下标为p(0<=p<=length-1)的元素,成功返回1,不成功返回0,并将删除元素的值赋给e

原创:转载请注明出处。

【天勤2-2】删除顺序表L中下标为p(0<=p<=length-1)的元素,成功返回1,不成功返回0,并将删除元素的值赋给e

代码:

//删除顺序表L中下标为p(0<=p<=length-1)的元素,
//成功返回1,不成功返回0,并将删除元素的值赋给e
#include<stdio.h>
#include<cstring>
#define MaxSize 200
#define ElemType int
#define Status int
#define OK 1
#define ERROR 0
using namespace std;

typedef struct
{
    ElemType data[MaxSize];
    int length;
} SqList; //定义结构体

Status initList(SqList *L)
{
    L->length = 0;
    return 0;
}//初始化顺序表

SqList createList(SqList * L, int n)
{
    int startNumber, step;
    printf("请输入初始值和步长:\n");
    scanf("%d %d", &startNumber, &step);
    for(int i=0; i<n; i++)
    {
        L->data[i] = startNumber + (i)*step;
    }
    L->length = n;
    return *L;
}//建造顺序表

void showList(SqList *L)
{
    for(int i=0; i<=L->length-1; i++)
    {
        printf("%d ", L->data[i]);
    }
    printf("\n\n\n");
}//屏幕输出顺序表


bool deleteElem(SqList *L, int p, int &e){
    if(p > L->length-1)return 0;
    if(p < 0)return 0;
    else{
        e=L->data[p];//把e赋过去
        for(int i=p; i < L->length-1; i++){
            L->data[i] = L->data[i+1];
        }
        L->length--;
        return 1;
    }
}

int main()
{

    SqList L;
    initList(&L);
    int n;
    printf("输入顺序表的元素个数:\n");
    scanf("%d",&n);
    createList(&L,n);
    showList(&L);
    printf("输入准备删除元素的下标:\n");
    int p;
    ElemType e;
    scanf("%d", &p);
    deleteElem(&L, p, e);
    showList(&L);
    printf("e的值为%d.\n", e);
    return 0;
}

结果如下:

猜你喜欢

转载自www.cnblogs.com/yangf428/p/11258100.html