《数据结构打卡》第2天(顺序表的算法)

线性表的顺序存储结构,插入、删除和定位运算

先来总结一下今天的笔记吧。
对了,其实以后想要再想把xdf文件转换成doc的话,可以直接复制相关问题在网上就可以查了,不用再去想办法转换

1.线性表的6种基本运算:
答:
初始化InitList(L)、求表长LengthList(L)、取值GetElem(L,i)、查找LocateElem(L,i,e)、插入InsertList(L,i,e)、删除DeleteList(L,i,e)。
2.写出顺序表的初始化、插入、删除算法。

(1)顺序表的初始化InitList(SqList &L)

Status InitList(SqList &L){
	L = new Node; //或L = (SqList * )malloc(sizeof(SqList)) 分配存储空间
	L.length = 0; //表长设为空
}

(2)顺序表的求长度LengthList(SqList L)

int LengthList(SqList L){
	return L.Length; //直接返回线性表的长度
}

(3)顺序表的取值GetElme(SqList L,int i,&e)

Status GetElme(SqList L,int i,&e){ //在表L中取第i个元素的值,用e返回其值
	//如果取值位置小于1或大于表的长度,则报错
	if(i<1 || i>L.length) return error;  //判断取值位置是否合法
	e = L.elem[i-1];  //直接用e返回第i个位置上元素的值(其地址为i-1)
	//取值时间复杂度为O(1)
}

(4)顺序表的查找LocateElem(SqList L,int i,e)

int LocateElem(SqList L,int i,ElmeType e){ //返回表L中第i个元素位置的序号,失败则返回0;
	for(i=0;i<L.length;i++){ //从地址为0的元素开始一直往后找
	if(L.elem[i]==e)  //若第i个元素的值=e
		return i+1; //则返回元素的地址+1 为元素的序号
	else
		return 0; //失败返回0
	}
}

(5)顺序表的插入 InsertList(&L,i,e)
在顺序表的第i个位置插入数据元素。

Status  InsertList(SqList &L,int i,ElemType e){ //在表L中第i个元素位置上插入元素e
	int j; //定义需要移动的元素的位置j
	if(i<i || i>L.length+1) return error //只能在1~n+1的位置上插入
	if(L.length == MaxSize) return error //判断插入位置是否已满
	for(j=L.lenth-1;j>=i-1;j--){ //如果表长大于等于要插入的元素i-1的范围,就允许插入
		L.elem[j+1]	= L.elem[j]; //1.先将元素依次后移一位
	}
	L.elem[i-1] = e; //2.然后再将元素e插入到第i-1个位置
	L.length++; //3.表长加1
	return ok;
}
//插入算法的时间复杂度为O(n),在第i个元素上插入需要移动的元素个数为n-i+1,
//平均需要移动的元素个数为n/2。

(6)顺序表的删除

Status DeleteList(SqList L,int i,ElemType &e){ //删除表L第i个元素的值,其值用e保存
	int j; //定义需要移动的元素位置j
	if(i<i || i>L.length) return error //判断删除位置是否正确
	*e = L.elem[i-1]; //1.先用e保存被删元素的值
	for(j=i-1;j<=L.length-1;j++){//要删除的元素的位置i-1必须小于等于表长,则允许删除
		L.elem[j-1] = L.elem[j]; //2.插入位置之后的元素依次向前移动一位
	}
	L.length--; //3.表长减1
	return ok;
	
}
//删除算法的时间复杂度为O(n),在第i个元素上删除需要移动的元素个数为n-i,
//平均需要移动的元素个(n-1)/2。

1.今天得抓紧时间写点笔记了,绝不能拖到明天再做了,因为今天在家里学得太少了;
2.上午只回顾了昨天单链表的逆置算法,插入删除,以及在找办法把xdf文件转换成pdf再转换成doc文件,忙了那么久,后面才发现转换成的文档只能以图片的形式呈现,连复制都不能;
3.下午只做了《第二章线性表习题集》一套题不到,只做了前面30几套填空题和后面20套选择题,甚至都还没来得及总结,就到晚上了。
4.果真是疲惫了,都没有想继续做下笔记的想法了,算了,留到明天早上再来回顾今天的笔记吧。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值