顺序储存结构的线性表即为利用数组来模拟链表的操作,一切皆数组。
#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;
}