线性表的顺序存储实现
2014-11-17 14:44
302 查看
#define ListSize 100
typedef struct
{
DataType list[ListSize];
int length;
}SeqList;
void InitList(SeqList *L)
{
L->length = 0;
}
int ListEmpty(SeqList L)
{
if(L.length ==0 )
return 1;
else
return 0;
}
int GetElem(SeqList L, int i, DataType *e)
{
if(i<1||i>L.length)
return -1;
*e = L.list[i-1];
return 1;
}
int LocateElem(SeqList L, DataType e)
{
int i;
for(i=0; i<L.length; i++ )
{
if(L.list[i] == e)
return i;
}
return -1;
}
int InsertList(SeqList *L, int i, DataType e)
{
int j;
if(i<1 || i>L->length + 1)
{
printf("插入的位置i不合法。\n");
return -1;
}
else if(L->length >= ListSize)
{
printf("顺序表已满,不能插入元素。\n");
return 0;
}
else
{
for(j=L->length;j>=i;j--)
L->list[j]=L->list[j-1];
L->list[i-1] = e;
L->length = L->length + 1;
return 1;
}
}
int DeleteList(SeqList *L, int i, DataType *e)
{
int j;
if(L->length <= 0)
{
printf("顺序表已空不能进行删除\n");
return 0;
}
else if(i<1||i>L->length)
{
printf("删除位置不合适\n");
return -1;
}
else
{
*e = L->list[i-1];
for(j=i;j<L->length;j++)
L->list[j-1] = L->list[j];
L->length = L->length -1;
return 1;
}
}
int ListLength(SeqList L)
{
return L.length;
}
void ClearList(SeqList *L)
{
L->length = 0;
}
typedef struct
{
DataType list[ListSize];
int length;
}SeqList;
void InitList(SeqList *L)
{
L->length = 0;
}
int ListEmpty(SeqList L)
{
if(L.length ==0 )
return 1;
else
return 0;
}
int GetElem(SeqList L, int i, DataType *e)
{
if(i<1||i>L.length)
return -1;
*e = L.list[i-1];
return 1;
}
int LocateElem(SeqList L, DataType e)
{
int i;
for(i=0; i<L.length; i++ )
{
if(L.list[i] == e)
return i;
}
return -1;
}
int InsertList(SeqList *L, int i, DataType e)
{
int j;
if(i<1 || i>L->length + 1)
{
printf("插入的位置i不合法。\n");
return -1;
}
else if(L->length >= ListSize)
{
printf("顺序表已满,不能插入元素。\n");
return 0;
}
else
{
for(j=L->length;j>=i;j--)
L->list[j]=L->list[j-1];
L->list[i-1] = e;
L->length = L->length + 1;
return 1;
}
}
int DeleteList(SeqList *L, int i, DataType *e)
{
int j;
if(L->length <= 0)
{
printf("顺序表已空不能进行删除\n");
return 0;
}
else if(i<1||i>L->length)
{
printf("删除位置不合适\n");
return -1;
}
else
{
*e = L->list[i-1];
for(j=i;j<L->length;j++)
L->list[j-1] = L->list[j];
L->length = L->length -1;
return 1;
}
}
int ListLength(SeqList L)
{
return L.length;
}
void ClearList(SeqList *L)
{
L->length = 0;
}
相关文章推荐
- 线性表的顺序存储实现及相关操作 C语言版
- 线性结构的顺序存储和链式存储的实现代码(二)
- 线性表(顺序存储)结构与功能的简易实现
- PHP实现线性表的顺序存储实现
- 线性表的Java实现--顺序存储
- 第3章 线性表的顺序存储c#实现---《大话数据结构》读书笔记
- 线性表---顺序存储实现
- 数据结构:线性表的顺序存储--Java实现
- 线性表的顺序存储及JAVA实现
- 线性表顺序存储(C++ 实现)
- 线性表的顺序存储及操作实现
- 线性表的存储结构---顺序表的实现
- 数据结构:线性表(顺序存储)顺序栈类(实现创建,输出,入栈出栈,读栈顶元素功能)
- java实现线性表的顺序存储
- 线性表以顺序表为存储结构的实现(数据元素的类型为整型)
- 线性结构的顺序存储和链式存储的实现代码(一)
- 数组实现线性表的顺序存储
- 线性表的顺序存储实现及相关操作 C语言版
- java 实现线性表之顺序存储
- 线性结构的顺序存储的实现