顺序存储和链式存储

顺序存储结构
定义
顺序表就是把线性表中的所有元素按照某种逻辑顺序,依次存储到从指定位置开始的一块连续的存储空间。

初始化

struct SqList{
    int data[MaxSize]; // 存放顺序表的元素
    int length; // 存放顺序表的长度
    int last;
};

void Init(SqList *L){
    L->data[0] = int(malloc(MaxSize * sizeof(int)));
    int n, i = 0;
    cin >> n;
    L->length = n;
    while (i < n)
    {
        cin >>(L->data[i++]);
    }
    L->last = i - 1;
}
 

插入

bool InsertList(SqList &L, int i, int e)
{
    // 在顺序表中第i个位置(位序,不是下标)插入数值e
    int j;
    if (i<1 || i>L.length+1) // 是否越界
        return false;
    if (L.length == MaxSize)// 内存已满
        return false;
    L.length++;            // 长度++
    for (j = L.length; j >= i; j--) // 将第i个起的数据后移
        L.data[j] = L.data[j - 1];
    L.data[j] = e;
    return true;
}

删除

bool DeleteList(SqList&L, int i)
{
    // 删除顺序表中第i个元素
    int j;
    if (i<1 || i>L.length)
        return false;   // 判断越界
    for (j = i; j < L.length; j++)
        L.data[j - 1] = L.data[j];
    L.length--;
    return true;
}

查找

bool LocateElem(SqList L, int e)
{
    int i;
    for(i = 0; i < L.length; i++){
        if(L.data[i] == e){
            return i+1;
        }
    }
 

链式存储结构

又称为链表,用于存储逻辑关系为 “一对一” 的数据。

用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的),包括数据域和指针域,数据域存数据,指针域指示其后继的信息。

初始化

单链表的初始化是指构建一个空表。先创建一个空结点,不存放数据,然后令其指针域为空;

bool InitList_L(LinkList &L){
    L = new Lnode; 
    if(!L) return false;
    L -> next = NULL;
    return true;
}

插入结点

p = GetElem(L, i-1);
s -> next = p -> next;
p -> next = s;

删除结点

p = GetElem(L, i-1);
q = p -> next;
p -> next = q -> next;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值