961数据结构总结----顺序表

基本操作

InitList(&L)			初始化表,构件一个空表
Length(L)				求表长,返回表长度,即元素个数
LocateElem(L,e)			按值查找元素,找值为e的元素
Getelem(L,i)			按位查找,找第i个位置的元素
ListInsert(&L,i,e)		插入,第i个位置插入e
ListDelete(&L,i,&e)		删除,删除第i个位置元素,并用e返回
PrintList(L)			输出,依次输出各个元素
Empty(L)				判空,若空则返回true
DestroyList(&L)			销毁,释放空间

结构

//静态分配
typedef struct{
	ElemType  data[MaxSize];
	int   length;
}SqList;

//动态分配
typedef struct{
	ElemType  *data
	int	  MaxSize,length;
}SeqList;

//c的动态分配语句
L.data=(ElemType*)malloc(sizeof(ElemType)*InitSize);

插入

bool ListInsert(SqList &L,int i,ElemType e){
	if(i<1||i>L.length+1)       //判断i值是否有效 
	    return false; 
	if(L.length>=MaxSize)        //当前储存空间已满,不能插入 
	    return false;      
	for(int j=L.length;j>=i;j--)     //将第i个元素及之后的元素后移 
	  L.data[j]=L.data[j-1];
	L.data[i-1]=e;           //在位置i上放入e 
	L.length++;              //线性表长度加1 
  	return true;                        
}

删除

bool ListDelete(SqList &L,int i,ElemType &e) {
	if(i<1||i>L.length)         //判断i的范围是否有效 
	   return false; 
	e=L.data[i-1];            //将被删除的元素赋值给e 
	for(int j=i;j<L.length;j++)           //将第i个位置后的元素前移 
	  L.data[j-1]=L.data[j];
	L.length--;                //线性表长度减1 
	return true;
}

查找

int LocateElem(SqList L,ElemType e){
	int i;
	for(i=0;i<L.length;i++)
	   if(L.data[i]==e)
	     return i+1;              //下标为i的元素等于e,返回其次序i+1 
	return 0;                     //退出循环,说明查找失败 
} 

顺序表L的所有元素逆置,复杂度为O(1)

void Reverse(SqList &L)
{
    int i;
	ElemType temp;     //辅助变量 
	for(i=0;i<=L.length/2;i++)
     {//交换 L.data[i]与L.data[L.length-i-1] 
      temp=L.data[i];
      L.data[i]=L.data[L.length-i-1];
      L.data[L.length-i-1]=temp;
	  }                     
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值