operation

1
2
3
InitList(L):初始化线性表
ListInsert(*L, i, e):在线性表中的第i个位置插入新元素e
LocateElem(L, e):查找线性表中是否有某元素

任务

1
2
3
4
5
6
/*
1.定义线性表类型的对象L。
2.初始化线性表L,并输出其长度。
3.在表头依次插入1~5,输出其长度,并判断L是否为空。
4.判断元素3在不在L中,若在,则输出其位置,若不在,则输出”没有该元素“;
*/

代码实现

  • C

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    #include<stdio.h>
    #define OK 1
    #define ERROR 0
    #define TRUE 1
    #define FALSE 0

    #define MAXSIZE 20

    typedef int ElemType;//抽象数据类型,是线性表中数据元素的数据类型。
    typedef int Status;//抽象数据类型,是函数返回值的类型

    typedef struct
    {
    ElemType data[MAXSIZE];
    int length;
    }SqList;
    //初始化线性表
    Status InitList(SqList L)
    {
    L.length = 0;
    return OK;
    }
    //将线性表中第i个位置插入新元素e
    Status ListInsert(SqList *L, int i, ElemType e)
    {
    int k;
    //判断线性表是否已满
    if(L->length == MAXSIZE)
    return ERROR;
    if(i < 1 || i > L->length+1)//判断i是否有效
    return ERROR;
    if(i <= L->length)
    {
    //将第i个位置及其之后的元素后移一位
    for(k = L->length-1;k >= i-1; k--)
    {
    L->data[k+1] = L->data[k];
    }
    }
    //将新元素插入
    L->data[i-1] = e;
    //更新线性表的长度
    L->length ++;
    return OK;
    }
    //查找线性表中是否有某元素
    Status LocateElem(SqList L, ElemType e)
    {
    int i;
    //判断线性表是否为空
    if(L.length == 0)
    return ERROR;
    //在线性表中寻找数据元素e,并获取其位置
    for(i = 0;i < L.length; i++)
    {
    if(L.data[i] == e)
    break;
    }
    //返回数据元素e在线性表的位置
    return (i+1);
    }
    int main()
    {
    SqList L;//定义一个顺序结构的线性表。
    Status i;

    i = InitList(L);//初始化线性表L。
    printf("L.length = %d\n",L.length);
    //在表头依次插入1~5
    for(int j=1; j <= 5; j++){
    ListInsert(&L, 1, j);
    }
    printf("L.length = %d\n",L.length);
    //判断元素3在不在L中,若在,则输出其位置,若不在,则输出”没有该元素“;
    int k = LocateElem(L, 3);
    if(k)
    printf("第%d个元素的值为3\n",k);
    else
    printf("没有值为3的元素\n");
    }
  • C++

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    #include<iostream>
    using namespace std;
    #define OK 1
    #define ERROR 0
    #define TRUE 1
    #define FALSE 0

    #define MAXSIZE 20

    typedef int ElemType;//抽象数据类型,是线性表中数据元素的数据类型。
    typedef int Status;//抽象数据类型,是函数返回值的类型

    typedef struct
    {
    ElemType data[MAXSIZE];
    int length;
    }SqList;
    //初始化线性表
    Status InitList(SqList L)
    {
    L.length = 0;
    return OK;
    }
    //将线性表中第i个位置插入新元素e
    Status ListInsert(SqList *L, int i, ElemType e)
    {
    int k;
    //判断线性表是否已满
    if(L->length == MAXSIZE)
    return ERROR;
    if(i < 1 || i > L->length+1)//判断i是否有效
    return ERROR;
    if(i <= L->length)
    {
    //将第i个位置及其之后的元素后移一位
    for(k = L->length-1;k >= i-1; k--)
    {
    L->data[k+1] = L->data[k];
    }
    }
    //将新元素插入
    L->data[i-1] = e;
    //更新线性表的长度
    L->length ++;
    return OK;
    }
    //查找线性表中是否有某元素
    Status LocateElem(SqList L, ElemType e)
    {
    int i;
    //判断线性表是否为空
    if(L.length == 0)
    return ERROR;
    //在线性表中寻找数据元素e,并获取其位置
    for(i = 0;i < L.length; i++)
    {
    if(L.data[i] == e)
    break;
    }
    //返回数据元素e在线性表的位置
    return (i+1);
    }
    int main()
    {
    SqList L;//定义一个顺序结构的线性表。
    Status i;

    i = InitList(L);//初始化线性表L。
    cout<< "L.length = "<< L.length << endl;
    //在表头依次插入1~5
    for(int j=1; j <= 5; j++){
    ListInsert(&L, 1, j);
    }
    cout<< "L.length = " << L.length << endl;
    //判断元素3在不在L中,若在,则输出其位置,若不在,则输出”没有该元素“;
    int k = LocateElem(L, 3);
    if(k)
    cout<< "第" << k << "个元素的值为3\n" << endl;
    else
    cout<< "没有值为3的元素" << endl;
    }
  • java

    1