您的位置:首页 > 其它

顺序表各种基本运算的算法

2017-10-11 19:45 741 查看
【代码】//文件名:sqlist.cpp

#include <stdio.h>
#include <malloc.h>
#define MaxSize 50
typedef int ElemType;
typedef struct
{ ElemType data[MaxSize];
int length;
} SqList;
void InitList(SqList *&L) //初始化线性表
{ L=(SqList *)malloc(sizeof(SqList));
L->length=0;
}
void DestroyList(SqList *L) //销毁线性表
{ free(L);
}
void CreateList(SqList *L,ElemType a[],int n) //建立顺序表
{ int i=0,k=0;
while(i<n)
{ L->data[i]=a[i];
k++;
i++;
}
L->length=k;
}
bool ListEmpty(SqList *L) //判断线性表是否为空表
{ return (L->length==0);
}
int ListLength(SqList *L) //求线性表长度
{ return (L->length);
}
void DispList(SqList *L) //输出线性表
{ for(int i=0; i<L->length; i++)
printf("%d ",L->data[i]);
printf("\n");
}
bool GetElem(SqList *L,int i,ElemType &e) //求线性表中第i个元素的值
{ if(i<1||i>L->length)
return false;
e=L->data[i-1];
return true;
}
int LocateElem(SqList *L,ElemType e) //查找第一个值域为e的元素序号
{ int i=0;
while(i<L->length&&L->data[i]!=e)
i++;
if(i>=L->length)
return 0;
else
return i+1;
}
bool ListInsert(SqList *L,int i,ElemType e) //插入到第i个元素位置
{ int j;
if(i<1||i>L->length+1)
return false;
i--;
for(j=L->length; j>i; j--)
L->data[j]=L->data[j-1];
L->data[i]=e;
L->length++;
return true;
}
bool ListDelete(SqList *L,int i,ElemType &e) //删除第i个元素
{ int j;
if(i<1||i>L->length)
return false;
i--;
e=L->data[i];
for(j=i; j<L->length-1; j++)
L->data[j]=L->data[j+1];
L->length--;
return true;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: