顺序表题目

2023-06-17 0 1,311

顺序表定义

//静态表 
typedef struct {
	int data[MAXSIZE];
	int length; 
}StaticSqList; 

顺序表题目

//1.删除最小元素
bool DeleteMinElement(StaticSqList &L,int value){
	if(L.length==0) return false;
	//最小的元素 
	int min = L.data[0];
	//最小元素的下标 
	int min_x = 0; 
	//循环,比较出最小元素 
	for(int i=0;i<L.length;i++){
		if(L.data[i]<min){
			min = L.data[i];
			min_x = i;
		}
	}
	//最后一个元素替代本元素
	L.data[min_x] = L.data[L.length-1]; 
	//数组减少 
	L.length--;
	value = min;
	//返回 
	return true;
} 
//2.逆置元素
bool reverseList(StaticSqList &L){
	int temp; 
	for(int i=0;i<L.length/2;i++){
		temp = L.data[i];
		L.data[i] = L.data[L.length-i-1];
		L.data[L.length-i-1] = temp;
	}
	return true;
} 
//3.删除所有X的元素
bool deletexelem(StaticSqList &L,int x){
	int u = 0;
	//全过一遍 
	for(int i=0;i<L.length;i++){
		if(L.data[i]!=x){
			//不是X元素U,I就一直前进,是X元素就U停一下 
			L.data[u] = L.data[i];
			u++;
		}
	}
	//U是删除X元素个数后剩余的元素个数 
	L.length = u;
	return true;
}
//4.(有序)删除S-T之间的所有元素
bool  deleteSToTElemY(StaticSqList &L,int s,int t){
	int i,j;
	//下标合法性判定 
	if(s>=t || L.length==0)return false;
	//找到第一个大于等于s的元素下标 
	for(i=0;i<L.length&&L.data[i]<s;i++);
	//找不到判定查找失败
	//注意i最后一次循环会++变为L.length 
	if(i>=L.length)return false;
	//找到第一个大于T的下标
	for(j=i;j<L.length&L.data[j]<=t;j++) 
	//移动
	for(;j<L.length;i++,j++){
		L.data[i] = L.data[j];
	} 
	L.length = i
	return true;
}
//5.(无序)删除S-T之间的所有元素
bool  deleteSToTElemW(StaticSqList &L,int s,int t){
	int x=0;
	//下标合法性判定 
	if(s>=t || L.length==0)return false;
	//操作与第四题类似 
	for(int i=0;i<L.length;i++){
		if(L.data[i]<s || L.data[i]>t){
			L.data[x] = L.data[i];
			x++;
		}
	}
	L.length = x;
	return true;
} 
//6.(有序)删除重复值的元素(插入排序) 
bool deleteRepeatElem(StaticSqList &L){
	if(L.length == 0)return false;
	int i,j; //i存储不相同的元素,J为工作指针
	for(i=0,j=1;j<L.lengthj++){
		//元素不相同,我们才移动 
		//元素相同 i不动,j移动,相当于去掉了i的元素 
		if(L.data[i]!=L.data[j])
		 L.data[++i] = L.data[j]; 
	} 
	//注意顺序表长度从1开始 
	L.length = i+1;
	return true;
} 
//7.有序的顺序表合并
bool mergeTwoLists(StaticSqList &a,StaticSqList &b,StaticSqList &c){
	//防止溢出 
	if(a.length+b.length > MAXSIZE)return false;
	int i=0,j=0,k=0;
	while(i<a.length && j<b.length){
		//注意是小于等于 
		if(a.data[i]<=b.data[j]){
			c.data[k++] = a.data[i++];
		}else{
			c.data[k++] = b.data[j++];
		}
	}
	while(i<a.length){
		c.data[k++] = a.data[i++];
	}
	while(j<b.length){
		c.data[k++] = b.data[j++];
	}
	c.length = k; 
	return true;
}
收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (1)

本站部分资源收集自互联网,我站仅分享内容,仅供用户个人研究,不提供商业使用,如有侵权下架处理,觉得资源内容不错请您在官方渠道购买正版,您在阅读的同时下载的内容本站不承担任何法律责任!Some resources of this website are collected from the Internet. We only share the content, which is only for personal research of users, and not for commercial use. If there is infringement and off shelf processing, please purchase the authentic version of the resource content from the official channel if you think it is good. We will not bear any legal responsibility for the content you download while reading!

橙凰素材-精品源码下载|正版主题更新 学习交流 顺序表题目 https://b.bqzmz.com/2023/06/17/%e9%a1%ba%e5%ba%8f%e8%a1%a8%e9%a2%98%e7%9b%ae/

一名苦逼的程序员

常见问题
  • 正版主题是指站长在指定渠道购买的官方主题,提供作者联系,资源支持,长期更新等等内容
查看详情
  • 非常抱歉,请联系网站页脚的客服,我们将在核实后下架处理并返还给您此资源的收益(会扣去网站运营的费用),谢谢理解!
查看详情
  • 网络资源是站长从互联网分享收集而来的内容,本站不会做测试,直接分享,不包源码可用性,运营性,如有需求点击右边的联系正版,谢谢!
查看详情
  • 如果资源不是最新版本,请在资源下方评论区进行催更或提交工单处理,我们会尽快更新并通过邮箱通知您。
查看详情

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务