数据结构---顺序表的基本操作代码块

顺序表的基本操作



//定义 
typedef struct
{
	ElemType *Elem;                          //动态数组,存储空间基地址 
	int length = 0;                          //当前长度 
}SqList;                                     //顺序表结构类型



//初始化
Status InitList(SqList &L)
{ //构造一个空的顺序表
	L.Elem = new ElemType[MaxSize];            //为顺序分配一个MAxSize大小的空间
	if (!L.Elem)                             //判断是否成功分配到空间 
	   exit(OVERFLOW);
	else
	   L.length = 0;
	return OK; 
} 


 
//创建
Status CreatList(SqList &L, int n)           //创建一个长度为n的顺序表 
{
	for (int i = 0; i < n ; i++)              
	    cin >> L.Elem[i];
	L.length = n;
	return OK;
 } 


 
//判空
Status ListEmpty(SqList L) 
{
	return L.length == 0;                     //判断表的长度是否为0 
}

//取值
int GetElem(SqList L, int i, ElemType &e)
{
    if (i < 1 || i > L.length )              //判断i的值是否合理
        return error;
    e = L.elem[i - 1];                        //第i - 1的单元存储着第i个数据
    return ok
}
     


//按位查找 
Status GetElem(SqList L, int i, ElemType &e)  //查找L表中第i个元素,并用e返回第i个元素的值 
{                      
	if (i < 1 || i > L.length)
	    return ERROR;
	for (i = 0; i < L.length; i++)
	    e = L.Elem[i - 1];                   //第i个元素也就是数组下标为i-1的元素 
	return OK;
}


 
//按值查找
int LocateList(SqList L, Elemtype e)
{
    for (int i = 0; i < L.length; i++)
	{
	    if (L.Elem[i] == e)
		return i + 1;	                     //数组下标为i的元素,其序号为i + 1 
	}	      
	return 0;                                //查找失败返回0
} 


 
//输出
Status DispList(SqList L)
{
	for (int i = 0; i < L.length; i++)
	    cout << L.Elem[i] << ' ';
	return OK;
 } 


 
//插入,在第i个元素位置上插入元素e 
Status ListInsert(SqList &L, int i, ElemType e)
{
	if (i < 1 || i > L.length + 1)            //判断插入位置i的值是否合法 
	   return ERROR;                          //  1 <= i < L.length + 1
	if (L.length == MaxSize)                  //如果表的长度已经等于最大空间长度值了,说明表中空间已满 
	   return ERROR;
	for (int j = L.length - 1; j >= i; j--)    
	    L.Elem[j] = L.Elem[j - 1];
	L.Elem[i - 1] = e;
	L.length++;
	return OK;
 } 


 
//删除,删除表中第i个元素
Status ListDelete(SqList &L, int i)
{
	if (i < i || i > L.length)
	   return ERROR;
	for (int j = i; j <= L.length - 1; j++)
	   L.Elem[j - 1] = L.Elem[j];
	L.length--;
	return OK;
}


//销毁
Status DestoryList(SqList &L)
{
	delete []L.elem;
	L.elem = NULL;
	L.length = 0;
    return ok;	
 } 

你可能感兴趣的:(数据结构代码笔记,数据结构)