首页 > 技术文章 > 【数据结构】顺序表的操作例2-1&2(TQ-P25)

zhulu506 2021-07-13 17:34 原文

#include <bits/stdc++.h>

#define maxSize 100

using namespace std;

typedef struct
{
    int data[maxSize];
    int length;
} SqList;

//输入
void input(SqList &L)
{
    L.length = 0; //初始化顺序表长度为0

    int x, i = 0;
    scanf("%d", &x);

    while (x != 9999)
    {
        L.data[i] = x;
        L.length++;
        i++;
        scanf("%d", &x);
    }
}

//输出
void output(SqList &L)
{
    for (int i = 0; i < L.length; i++)
    {
        printf("data[%d]=%d\n", i, L.data[i]);
    }
    printf("\n");
}

//返回第一个比x大的元素的位置
int findElem(SqList &L, int x)
{
    int i;
    for (i = 0; i < L.length; i++)
    {
        if (L.data[i] > x)
        {
            return i;
        }
    }
    return i;
}

//插入元素
void insertElem(SqList &L, int x)
{
    int p = findElem(L, x); //找到插入位置p
    for (int i = L.length - 1; i >= p; i--)
    {
        L.data[i + 1] = L.data[i];
    }
    L.data[p] = x;
    L.length++;
}

//删除下标为p的元素
int deleteElem(SqList &L, int p, int &e)
{
    if (p < 0 || p > L.length - 1)
    {
        return 0;
    }
    e = L.data[p];
    for (int i = p; i < L.length - 1; i++)
    {
        L.data[i] = L.data[i + 1];
    }
    L.length--;
    return 1;
}

int main()
{
    SqList L;

    input(L);

    output(L);

    insertElem(L, 3);

    output(L);

    int e;

    if (deleteElem(L, 2, e))
    {
        printf("success!\ne=%d\n", e);
        output(L);
    }
    else
    {
        printf("failure!\n");
    }

    return 0;
}

input:

1
2
4
5
6
9999

output:

data[0]=1
data[1]=2
data[2]=4
data[3]=5
data[4]=6

data[0]=1
data[1]=2
data[2]=3
data[3]=4
data[4]=5
data[5]=6

success!
e=3
data[0]=1
data[1]=2
data[2]=4
data[3]=5
data[4]=6

推荐阅读