数据结构中线性表的顺序储存结构

顺序储存结构的线性表即为利用数组来模拟链表的操作,一切皆数组。
#include <stdio.h>

#define MAX_SIZE 100

typedef int TYPE;//在这里修改处理元素的类型
typedef int bool;
#define true 1
#define false 0

//定义线性表结构体
typedef struct
{
    TYPE line[MAX_SIZE];
    int len;
}List;
//初始化线性表
void InitList(List *L)
{
    L->len = 0;
}
//线性表的判空
bool ListEmpty(List L)
{
    if(L.len == 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}
//线性表的清空
void ClearList(List *L)
{
    L->len = 0;
}
//回显线性表中某位置的元素
void GetElem(List L, int i, TYPE* num)
{
    *num = L.line[i];
}
//定位线性表中的元素
TYPE LocateELem(List L, TYPE e)
{
    int i, len = L.len;
    for(i = 0; i < len; i++)
    {
        if(e == L.line[i])
        {
            return i + 1;
        }
    }
    return 0;
}
//往线性表某位置中插入一个元素
bool ListInsert(List* L, int i, TYPE e)
{
    if(L->len == MAX_SIZE)
    {
        return false;
    }
    else if(i < 0|| i >= MAX_SIZE)
    {
        return false;
    }
    if(i <= L->len)
    {
        int k;
        for(k = L->len - 1; k >= i - 1; k--)
        {
            L->line[k+1] = L->line[k];
        }
    }
    L->line[i - 1] = e;
    L->len++;
    return true;
}
//删除线性表中某位置的元素
void ListDelete(List *L, int i,TYPE *e)
{
    int j = L->len;
    L->len--;
    *e = L->line[i - 1];
    for(i -= 1; i < j - 1; i++)
    {
        L->line[i] = L->line[i + 1];
    }
}
//显示线性表元素个数
int ListLength(List L)
{
    return L.len;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值