利用结构体创建一个顺序表,并实现插入,删除,清空等功能(没有创建类,用类的方法再说)

本文介绍了如何使用C++编程语言实现了一个顺序表结构,包括清空列表、插入元素、查询长度和删除元素的方法,以及使用`memset`、`memcpy`和`memmove`等库函数的操作示例。
摘要由CSDN通过智能技术生成
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;

#define Maxsize 100
typedef int ElemType;

struct SeqList
{
    ElemType data[Maxsize];
    size_t length;
};

void Clearlist(SeqList& LL)
{
    LL.length = 0;
    memset(LL.data, 0, sizeof(ElemType) * Maxsize);
}

bool Insertlist(SeqList& LL, size_t pos, ElemType& ee)
{
    if (LL.length == Maxsize)
    {
        cout << "顺序表已满!" << endl;
        return false;
    }
    if ((pos < 1) || (pos > LL.length + 1)) { cout << "插入位置错误" << endl; return false; }
    if (pos < LL.length + 1)
        memcpy(LL.data + pos, LL.data + pos - 1, (LL.length - pos + 1) * sizeof(ElemType));
    memcpy(&LL.data[pos - 1], &ee, sizeof(ElemType));
    LL.length++;
    return true;
}

size_t lengthlist(const SeqList& LL)
{
    return LL.length;
}

void printlist(const SeqList& LL)
{
    if (LL.length == 0)
    {
        cout << "空表!" << endl;
        return;
    }
    for (size_t i = 0; i < LL.length; i++)
    {
        cout << LL.data[i] << "\t";
    }
    cout << endl;
    return;
}

bool deletelist(SeqList& LL, size_t pos)
{
    if ((pos < 1) || (pos > LL.length + 1))
    { 
        cout << "删除位置错误" << endl; 
        return false; 
    }
    memmove(&LL.data[pos - 1], &LL.data[pos], (LL.length - pos) * sizeof(ElemType));
    LL.length--;
    return true;
}

int main()
{
    SeqList LL;
    Clearlist(LL);
    ElemType ee;
    ee = 32;
    Insertlist(LL, 1, ee);
    printlist(LL);
    ee = 33;
    Insertlist(LL, 2, ee);
    printlist(LL);
    ee = 34;
    Insertlist(LL, 1, ee);
    printlist(LL);
    deletelist(LL, 2);
    printlist(LL);
}


memset函数为库函数,作用是将数组初始化(本程序),memcpy为复制字符串,memmove为移动字符串,ElemType为别名,如果想将int型顺序表转为别的(如char,double等),直接修改一行即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值