当前位置: 首页 > news >正文

线性表的顺序表示

线性表的顺序表示简称顺序表  ,逻辑上相邻的两个元素在物理位置上也相邻

业界函数命名规范:下划线命名法list_insert和驼峰命名法ListInsert

#include<iostream>
#define Maxsize 50
using namespace std;
typedef int elemtype;//让顺序表存储其他类型元素时,可以快速完成代码修改 
typedef struct {
	elemtype data[Maxsize];
	int length  ;  // 当前顺序表有多少个元素 
}Sqlist; 

bool ListInsert(Sqlist &L,int pos,elemtype element)//为什么加引用因为L会改变 
{
	//判断插入位置是否合法 
	if(pos<1||pos>L.length+1)
	{
		return  false;
		
	}
	//如果存储空间满了,不能插入
	if(L.length==Maxsize)
	{
		return false;
	 } 
	 int j;
	 //把后面的元素依次往后移动,空出位置,来放入要插入的元素 
	 for(j=L.length;j>=pos;j--)
	 {
	 	L.data[j]=L.data[j-1];
	 	
	 }
	 L.data[pos-1]=element;
	 L.length++;
	 return true;
	  

}
void PrintList(Sqlist L)//不需要改变顺序表因此不需要加引用	 
{
	for(int i=0;i<L.length;i++)
	{
		cout<<L.data[i]<<" ";
	}
	cout<<endl;
}
int main(){
	Sqlist L;
	bool ret; //ret用来装函数的返回值 
	L.data[0]=1;
	L.data[1]=2;
	L.data[2]=3;
	L.data[3]=4;
	L.length=4;
	ret=ListInsert(L,9,89);
	if(ret==true)
	{
	PrintList(L);
	 } 
	 else
	 {
	 	cout<<"插入失败"<<endl; 
	 }
	
	return 0;
} 

线性表插入删除查找完整代码

#include<iostream>
#define Maxsize 50
using namespace std;
typedef int elemtype;//让顺序表存储其他类型元素时,可以快速完成代码修改 
typedef struct {
	elemtype data[Maxsize];
	int length  ;  // 当前顺序表有多少个元素 
}Sqlist; 

bool DeleteList(Sqlist &L,int pos,elemtype &del)
{
	//判断删除位置是否合法
	if(pos<1||pos>L.length+1)
	{
		return false;
	 } 
	 del=L.data[pos-1];
	 int j;
	 for(j=pos;j<L.length;j++)
	 {
	 	L.data[j-1]=L.data[j];
	 }
	 L.length--;
	 return true;
	 
	 
	 //第二种写法
//	 for(j=pos-1;j<length-1;j++)
//	 {
//	 	L.data[j]=L.data[j+1];
//	 	
//	  } 
//L.length--;
//return true;
}
bool ListInsert(Sqlist &L,int pos,elemtype element)//为什么加引用因为L会改变 
{
	//判断插入位置是否合法 
	if(pos<1||pos>L.length+1)
	{
		return  false;
		
	}
	//如果存储空间满了,不能插入
	if(L.length==Maxsize)
	{
		return false;
	 } 
	 int j;
	 //把后面的元素依次往后移动,空出位置,来放入要插入的元素 
	 for(j=L.length;j>=pos;j--)
	 {
	 	L.data[j]=L.data[j-1];
	 	
	 }
	 L.data[pos-1]=element;
	 L.length++;
	 return true;
	  

}
//查找某个元素的位置,找到了返回1 没找到返回0 
int locateElem(Sqlist L,elemtype data){

	int i;
	for(int i=0;i<L.length-1;i++)
	{
		if(L.data[i]==data)
		{
			return  i+1;
		}
	
	}
	return 0;//循环结束没找到 
	 
}
void PrintList(Sqlist L)//不需要改变顺序表因此不需要加引用	 
{
	for(int i=0;i<L.length;i++)
	{
		cout<<L.data[i]<<" ";
	}
	cout<<endl;
}
int main(){
	Sqlist L;
	bool ret; //ret用来装函数的返回值 
	L.data[0]=1;
	L.data[1]=2;
	L.data[2]=3;
	L.data[3]=4;
	L.length=4;
	elemtype del;
			
	//ret=ListInsert(L,9,89);
	//ret=DeleteList(L,2,del); 
	int pos=locateElem(L,8);
	cout<<pos<<endl;
//	if(ret==true)
//	{
//	PrintList(L);
//	 } 
//	 else
//	 {
//	 	cout<<"插入失败"<<endl; 
//	 }
//	 cout<<"删除的元素是"<<del<<endl;


	return 0;
} 

相关文章:

  • QuecPython + MQTT:物联网设备通信实战指南
  • 解决前端文字超高度有滚动条的情况下padding失效(el-scrollbar)使用
  • 鸿蒙跳转到系统设置app界面
  • 虚幻基础:GAS
  • ngx_http_module_t
  • Java调用Oss JDk删除指定目录下的所有文件
  • 【最大异或和——可持久化Trie】
  • 设计模式-桥接模式
  • C语言文件管理详解(上)
  • 下拉菜单+DoTween插件
  • 基于ssm图文印务交互系统小程序(源码+lw+部署文档+讲解),源码可白嫖!
  • Docker 使用指南
  • Django Rest Framework 创建纯净版Django项目部署DRF
  • 每日一题——二叉树的三种中序遍历方法
  • C语言基础要素(017):退出条件循环:do-while
  • Qt 实现波浪填充的圆形进度显示
  • 谈谈 undefined 和 null
  • SAP(第四周)
  • NebulaGraph3.3.0部署与配置
  • 基于运动电商虚拟数据的商业洞察与分析
  • 游客称在网红雪山勒多曼因峰需救援被开价2.8万,康定文旅:封闭整改
  • 马上评丨规范隐藏式车门把手,重申安全高于酷炫
  • 安徽亳州涡阳县司法局党组书记刘兴连落马
  • “爱鸟周”为何不能像FI和花展那样“市区联动”
  • “上海之帆”巡展在日本大阪开幕,松江区组织企业集体出展
  • 东亚社会的“苦难诗学”:从《苦尽柑来遇见你》说起