首页 > 其他 > 详细

数据结构—顺序表的基本操作

时间:2021-05-25 09:17:47      阅读:21      评论:0      收藏:0      [点我收藏+]
#include<iostream>
using namespace std;

#define MaxSize 10

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

// 初始化一个顺序表
void InitList(SqList &L)
{
    for (int i=0; i<MaxSize; i++)
        L.data[i] = 0;
    L.length = 0;
}

// 在顺序表的第i个位置插入元素e
bool ListInsert(SqList &L, int i, int e)
{
    if (i<1 || i>L.length+1)    // 判断i的范围是否有效
        return false;
    if (L.length >= MaxSize)    // 当前存储空间已满,不能插入
        return false;
    for (int j=L.length; j>=i; j--)  // 将第i个元素及以后的元素后移
        L.data[j] = L.data[j-1];  
    L.data[i-1] = e;                // 在位置i放入元素e
    L.length ++;                    // 长度加·1
    return true;
}

// 在顺序表的第i个位置插入元素e
bool ListDelete(SqList &L, int i, int &e)
{
    if (i<1 || i>L.length)  // 判断i的范围是否有效
        return false;
    e = L.data[i-1];        // 将被删除的元素赋值给e 
    for (int j=i; j<L.length; j++)  // 将第i个位置后的元素前移
        L.data[j-1] = L.data[j];  
    L.length --;                    // 长度加·1
    return true;
}

// 按位置查找元素, 返回元素值
int GetElem(SqList L, int i)
{    
    if (i<1 || i>L.length)  // 判断i的范围是否有效
        return 0;
    return L.data[i-1];
}

// 按值查找元素,返回元素的位置
int LocElem(SqList L, int e)
{
    for (int i=0; i<L.length; i++)
        if (L.data[i] == e)
            return i+1;
    return 0;
}

int main()
{
    SqList L;
    InitList(L);       // 初始化
    ListInsert(L,1,1); // 插入元素
    ListInsert(L,2,2); // 插入元素
    ListInsert(L,3,3); // 插入元素
    int e = -1;
    ListDelete(L,2,e); // 删除元素
    cout << "delete element: " << e << endl;

    int a = GetElem(L, i); // 按位置查找元素
    int b = LocElem(L, e); // 按值查找元素

    for (int i=0; i<L.length; i++)
        cout << "data[" << i << "]=" << L.data[i] << endl;
    return 0;
}

数据结构—顺序表的基本操作

原文:https://www.cnblogs.com/wangshx666/p/14806839.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!