线性表操作(线性表)

发布于:2022-12-29 ⋅ 阅读:(562) ⋅ 点赞:(0)

Description

(线性表)请你定义一个线性表,可以对表进行“在某个位置之前插入一个元素”、“删除某个位置的元素”、“清除所有元素”、“获取某个位置的元素”等操作。键盘输入一些命令,可以执行上述操作。本题中,线性表元素为整数,线性表的第一个元素位置为1。线性表的最大长度为1000。

Input

各个命令以及相关数据,它们对应的格式如下:

在某个位置之前插入操作:insert,接下来的一行是插入的组数n,下面是n行数据,每行数据有两个值,分别代表位置与插入的元素值

清除线性表:clear

获取某个位置的元素:getelem,接下来一行是需要获取的元素位置

删除某个位置的元素:delete,接下来一行是被删除的元素位置

当输入的命令为exit时,程序结束

Output

当输入的命令为getelem时,请输出获取的元素值,

当输入的命令是delete时,请输出被删除的那个元素值

注意,所有的元素均占一行

Sample Input

insert
2
1 1
2 2
delete
1
clear
insert
2
1 3
2 4
getelem
2
exit

Sample Output

1
4
​

#include<stdio.h>
#include<string.h>
#define MAX 1010
#define FALSE 0
#define TRUE  1
typedef struct{
    int data[MAX];
    int length;
}SqList;
int InsertList(SqList* L,int pos,int e){
    if(pos < 1 || pos > L->length + 1){
        return FALSE;
    }
    for(int i = L->length ; i >= pos ; i--){
        L->data[i+1] = L->data[i];
    }
    L->data[pos] = e;
    L->length++;
    return TRUE;
}
int ClearList(SqList* L){
    L->length = 0;
    return TRUE;
}
int DeleteList(SqList* L,int pos){
     if(pos < 1 || pos > L->length){
        return FALSE;
     }
     printf("%d\n",L->data[pos]);
     for(int i = pos ; i < L->length ;i++){
        L->data[i] = L->data[i+1];
     }
     L->length--;
     return TRUE;
}
int GetElem(SqList* L,int pos){
     printf("%d\n",L->data[pos]);
     return TRUE;
}
int main(){
    SqList L;
    L.length = 0;//必须给顺序表初始化(出错处)
    char ope[10];
    while(scanf("%s",ope)!=EOF&&strcmp(ope,"exit")!=0){
            if(strcmp(ope,"insert")==0){
                    int n;
                    scanf("%d",&n);
                    for(int i = 0;i < n;i++){
                        int pos,e;
                        scanf("%d %d",&pos,&e);
                        InsertList(&L,pos,e);
                    }

            }else if(strcmp(ope,"delete")==0){
                int pos;
                scanf("%d",&pos);
                DeleteList(&L,pos);

            }else if(strcmp(ope,"getelem")==0){
                int pos;
                scanf("%d",&pos);
                GetElem(&L,pos);
            }else if(strcmp(ope,"clear")==0){
                ClearList(&L);
            }
    }
    return 0;
}

[点击并拖拽以移动]
​

题目链接:

https://acm.sdtbu.edu.cn/JudgeOnline/problem.php?id=2637

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到