c语言实现:
#include <cstdio>
#include <cstdlib>
#define INITIAL 100
#define ADD 10
typedef char elemType;
struct List
{
elemType *elem; //存储空间基址
int length; //目前长度
int listsize; //当前已分配的存储容量
}SqList;
void Create(List *L)//构造线性表
{
(*L).elem = (elemType*)malloc(INITIAL*sizeof(elemType));//malloc所分配的空间是在堆中的
if ((*L).elem == NULL)
{
printf("内存分配失败!");
exit(1);
}
(*L).length = 0;
(*L).listsize = INITIAL;
}
void Insert(List *L,int loc,elemType data)//在指定位置添加新元素
{
if ((*L).length==(*L).listsize)
{
(*L).elem = (elemType *)realloc((*L).elem, ((*L).listsize+ADD)*sizeof(elemType));
}
for (elemType *i = (*L).elem + (*L).length; i > (*L).elem+loc; i--)
{
*i = (*i) - 1;
}
*((*L).elem + loc) = data;
(*L).length++;
}
void Show(List L)//输出所有元素
{
for (elemType *i = L.elem; i < L.elem + L.length; i++)
{
printf("%c ", *i);
}
printf("\n");
}
void Show_loc(List L, int loc)//输出loc位置的元素
{
printf("%c\n", *L.elem + loc);
}
void Delete(List *L,int loc)
{
for (elemType *i = (*L).elem + loc; i< (*L).elem + (*L).length; i++)
{
*i = *i + 1;
}
(*L).length--;
}
int main(void){
}