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

线性表的顺序表示

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

业界函数命名规范:下划线命名法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;
} 


http://www.kler.cn/a/589352.html

相关文章:

  • Mock接口编写教程-axios-mock-adapter(React)
  • react18 核心知识点杂记1
  • 需要使用新应用以打开此ms-gamingoverlay链接怎么解决
  • list及其模拟实现
  • 如何管理需求变更
  • Elasticsearch:为推理端点配置分块设置
  • 深入理解蒸馏、Function Call、React、Prompt 与 Agent
  • Redis安装与基础配置:单节点离线部署与配置解析
  • 量子计算助力智能制造:未来工业的加速器
  • 【测试篇】关于allpairs实现正交测试用例保姆级讲解,以及常见的错误问题
  • 相对论之光速
  • 联想拯救者 M600 无线游戏鼠标|自定义驱动程序安装说明
  • 【C++经典例题】反转字符串中单词的字符顺序:两种实现方法详解
  • CMake学习笔记(三):静态库,动态库的生成和使用
  • Python基础入门掌握(十三)
  • Spring源码解析
  • 自然语言处理demo:基于Python的《三体》文本分析
  • 更轻量级的的Knf4j接口文档配置实战
  • 【Linux篇】环境变量与地址空间
  • C++ 类和对象----构造函数