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

来源:互联网 发布:ecshop中h5源码购买 编辑:程序博客网 时间:2024/05/29 13:24
顺序储存结构的线性表即为利用数组来模拟链表的操作,一切皆数组。
#include <stdio.h>#define MAX_SIZE 100typedef 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;}