首页 > 其他分享 >10.3顺序表的初始化以及插入实战(早期学习笔记记录)

10.3顺序表的初始化以及插入实战(早期学习笔记记录)

时间:2024-05-06 16:34:34浏览次数:25  
标签:初始化 10.3 顺序 int pos 笔记 lenth sqlist data

命名规范

1.下划线命名法list_insert 不同的单词用下划线连接
2.驼峰命名法ListInsert 每个单词首字母大写

一切数据结构考的都是增(插入)删查改

插入思路

1、判断插入位置是否合法 1<=i<=lenth

if(i<1||i>lenth)
{
   return false;
}

2、判断储存空间是否已满(插入数据后是否超出MaxSize)

if(i>MaxSize)
{
    return false;
}

3、插入操作

for (int j = L.lenth-1; j >= pos-1; j--)
		{
			L.data[j + 1] = L.data[j];//所有排在插入位置后的数据往后移一位
		}
		L.data[pos-1] = element;//插入数据
		L.lenth++;//顺序表长度加一

完整代码

#include <stdio.h>//
//顺序表的初始化和插入
#define MaxSize 50   //定义最大存储量
typedef int elemtype;//定义顺序表数据类型,同时让顺序表存储其他数据类型时,方便代码修改
typedef struct {
	elemtype data[MaxSize];
	int lenth;//顺序表长度
}sqlist;//定义了一个"数据类型为sqlist"的顺序表
bool listInsert(sqlist&L, int pos, elemtype element)
{
	//判断pos是否合法,pos是插入的位置
	if (pos<1||pos>L.lenth)
	{
		return false;
	}
	if (pos > MaxSize)
	{
		return false;
	}
	else 
	{
		for (int j = L.lenth-1; j >= pos-1; j--)
		{
			L.data[j + 1] = L.data[j];
		}
		L.data[pos-1] = element;
		L.lenth++;
		return true;
	}
	
}
void PrintList(sqlist L)
{
	for (int j = 0; j < L.lenth; j++)
	{
		printf("%10d", L.data[j]);
	}

}
int main()
{
	sqlist L;//定义了一个sqlist类型的变量L(顺序表)
	bool ret;
	L.data[0] = 1;
	L.data[1] = 2;
	L.data[2] = 3;//一共定义了三个元素
	L.lenth = 3;//顺序表长度为3
	ret = listInsert(L, 2, 60);
	if (ret)
	{
		printf("插入成功\n");
		PrintList(L);
	}
	else
	{
		printf("插入失败\n");
	}
}

含输入输出

#include <stdio.h>//
//顺序表的初始化和插入
#define MaxSize 50   //定义最大存储量
typedef int elemtype;//定义顺序表数据类型,同时让顺序表存储其他数据类型时,方便代码修改
typedef struct {
	elemtype data[MaxSize];
	int lenth;//顺序表长度
}sqlist;//定义了一个"数据类型为sqlist"的顺序表
bool listInsert(sqlist& L, int pos, elemtype element)
{
	//判断pos是否合法,pos是插入的位置
	if (pos<1 || pos>L.lenth)
	{
		return false;
	}
	if (pos > MaxSize)
	{
		return false;
	}
	else
	{
		for (int j = L.lenth - 1; j >= pos - 1; j--)
		{
			L.data[j + 1] = L.data[j];
		}
		L.data[pos - 1] = element;
		L.lenth++;
		return true;
	}

}
void PrintList(sqlist L)
{
	for (int j = 0; j < L.lenth; j++)
	{
		printf("%4d", L.data[j]);
	}

}
int main()
{
	sqlist L;//定义了一个sqlist类型的变量L(顺序表)
	bool ret;
	printf("请输入插入元素个数:");
	scanf("%d", &L.lenth);
	printf("请输入一串顺序表:");
	for (int i = 0; i < L.lenth; i++)
	{
		scanf("%d", &L.data[i]);
	}
	printf("请输入要插入的位置和元素:");
	int p,e;
	scanf("%d%d", &p, &e);
	ret = listInsert(L, p, e);
	if (ret)
	{
		printf("插入成功\n");
		PrintList(L);
	}
	else
	{
		printf("插入失败\n");
	}
}

删除操作

#include <stdio.h>//
//顺序表删除
#define MaxSize 50   //定义最大存储量
typedef int elemtype;//定义顺序表数据类型,同时让顺序表存储其他数据类型时,方便代码修改
typedef struct {
	elemtype data[MaxSize];
	int lenth;//顺序表长度
}sqlist;//定义了一个"数据类型为sqlist"的顺序表
bool listInsert(sqlist& L, int pos)
{
	//判断pos是否合法,pos是删除元素的位置
	if (pos<1 || pos>L.lenth)
	{
		return false;
	}
	if (pos > MaxSize)
	{
		return false;
	}
	else
	{
		for (int j = pos; j<L.lenth; j++)
		{
			L.data[j-1] = L.data[j];
		}
		
		L.lenth--;
		return true;
	}

}
void PrintList(sqlist L)
{
	for (int j = 0; j < L.lenth; j++)
	{
		printf("%4d", L.data[j]);
	}

}
int main()
{
	sqlist L;//定义了一个sqlist类型的变量L(顺序表)
	bool ret;
	printf("请输入插入元素个数:");
	scanf("%d", &L.lenth);
	printf("请输入一串顺序表:");
	for (int i = 0; i < L.lenth; i++)
	{
		scanf("%d", &L.data[i]);
	}
	printf("请输入要删除的元素位置:");
	int p;
	scanf("%d", &p);
	ret = listInsert(L, p);
	if (ret)
	{
		printf("删除成功\n");
		PrintList(L);
	}
	else
	{
		printf("删除失败!\n");
	}
}

标签:初始化,10.3,顺序,int,pos,笔记,lenth,sqlist,data
From: https://www.cnblogs.com/gqy9521/p/18175294

相关文章

  • 设计模式笔记
    简单记一下方便需要的时候看设计模式原则总原则:开闭原则--对扩展开放,对修改关闭单一职责里氏替换--任何基类可以出现的地方,子类一定可以出现依赖倒置--依赖于抽象而不依赖于具体接口隔离--类间的依赖关系应该建立在最小的接口上最少知道--只和朋友交谈首......
  • 整体二分学习笔记
    最近准备学数据结构乱搞,接下来学k-dtree大致介绍可以使用整体二分解决的题目需要满足以下性质:1.询问的答案具有可二分性2.修改对判定答案的贡献互相独立,修改之间互不影响效果3.修改如果对判定答案有贡献,则贡献为一确定的与判定标准无关的值4.贡献满足交换律,结合律,具有可加......
  • [转帖]Oracle Exadata 学习笔记之核心特性Part1
    https://www.cnblogs.com/jyzhao/p/12257649.html#2 近年来,国内众多厂商都有一体机的产品,不过更多都是围绕硬件本身的堆砌和优化,那么这些产品和Oracle一体机最大的区别在哪里呢?最近读了李亚的《OracleExadata技术详解》,系统的了解了Exadata的一些核心特性,我个人认为这些特......
  • MyBatis笔记2024-05-06
    MyBatis笔记第1章--MyBatis日志管理与动态SQL日志门面(统一调用接口2两种)与实现(常见:log4j、logback、java.util.logging...)LoggingFacadeForJavaApacheCommons-logs增加依赖:ch.qos.logbackMyBatis会自动调用logback配置文件:logback.xml固定文件名配置内容:指定类,输出格式,日志......
  • H.264学习笔记——基本概念
    1.基本概念frame:帧,相当于一幅图像,包含一个亮度矩阵和两个色度矩阵。field:场,一帧图像,通过隔行扫描得到奇偶两场,分别称为顶场和底场或奇场和偶场。macroblock/MB:宏块,H.264中处理(预测、变换、量化)的基本单元,大小16*16个像素。slicegroup:条带组,每一帧/场图像中,按照光栅扫面的顺......
  • H.264学习笔记——相关概念
    基本概念frame:帧,相当于一幅图像,包含一个亮度矩阵和两个色度矩阵。field:场,一帧图像,通过隔行扫描得到奇偶两场,分别称为顶场和底场或奇场和偶场。macroblock/MB:宏块,H.264中处理(预测、变换、量化)的基本单元,大小16*16个像素。slicegroup:条带组,每一帧/场图像中,按照光栅扫面的顺序......
  • Razavi - RF Microelectronics的笔记 - Differential Output Current
    Onpage400,example6.26,weareaskedtoanalyzeadouble-balancedcircuitonits\(IP_2\).Idon'tgetwheredoes(6.127)comefrom.Sincethere'snoexplanationon(6.127),Iguessthisequationisobvious.SoIreducetheproblemandtry......
  • C++学习笔记
    参考https://github.com/weidongshan/cpp_projects《C++PrimerPlus》C++StandardsSupportinGCCGCCGCC中有libstdc++库的实现LLVMLLVM中有libc++库的实现面向对象编程的3大特点封装继承多态struct声明的类里的成员都是publicclass声明的类的成员都是pr......
  • TinyRender学习笔记
    通过手写软光栅渲染器加深对计算机图形学基本原理的理解,并练习C++面向对象程序设计。github链接:blackbird2003/blackbirdTinyRenderer(github.com)该项目主要参考Home·ssloy/tinyrendererWiki(github.com)编写推荐先过一下GAMES101Lesson0GettingStartedUsingTGAi......
  • 《自动机理论、语言和计算导论》阅读笔记:p402-p427
    《自动机理论、语言和计算导论》学习第13天,p402-P427总结,总计26页。一、技术总结无。二、英语总结1.eludee--,assimilatedformofex-(out,away)+ludere(toplay,seeludicrous)。vt.ifsthyouwanteludesyou,youdonotsucceedinachievingit。p426,Mor......