准备工作
#include <Stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 20
typedef int Status;//状态量
typedef int ElemType;
创建线性表
创建一个简单的线性表
typedef struct
{
ElemType date [MAXSIZE];
int length;
}SqList; /*创建线性表SqList*/
得到线性表中的元素
Status GetElem(Sqlist l,int i,ElemType *e)
{
if(l.length == 0||i < 1||i > l.length)
return ERROR;
*e=l.date [i-1];
return OK ;
} /*用e返回数据表l中第i个数据元素的值*/
线性表的插入操作
Status ListInsert(Sqlist *l,int i,ElemType e) /*在第i个位置之前插入e,l的长度加一*/
{
int k;
if(l->length==MAXSIZE) /*检查线性表是否满掉*/
return ERROR;
if(i<1||i >l->length +1) /*插入的位置是否在线性表里面*/
return ERROR;
if(i<=l->length) /*判断插入的位置是否在最后一个位置*/
{
for(k=l->length-1;k>=i-1;k--)
{
l->date[k+1] =l->date[k]; /*把要插入位置后的数据元素向后移动一位*/
}
}
l->date[i-1]==e; /*插入新元素*/
l->length++; /*线性表长度加一*/
return OK;
}
线性表的删除操作
Status ListDelete(Sqlist *l,int i,ElemType *e) /*删除第i个元素*/
{
int k;
if(l->length == 0) /*判断是不是空表*/
return ERROR;
if(i <1|| i >l->length) /*判断是不是在表内(即合法)*/
return ERROR;
*e=l->date[i-1];
if(i<l->length) /*假如删除的不是最后的位置*/
{
for(k=i;k<l->length;k++)
l->date[k-1] = l->date[k] /*把删除位置后继元素前移*/
}
l->length--; /*表长减一*/
return OK;
}