首页 > 其他分享 >順序表的增刪改查

順序表的增刪改查

时间:2024-04-21 16:34:04浏览次数:26  
标签:return int Data SeqList 改查 Manager DataType 增刪 順序表

順序表的定義

邏輯結構上為綫性結構,存儲上為順序存儲的存儲結構

定義順序表類型,以及順序表中的元素類型


- 創建顺序表中的元素的数据类型,用户可以根据需要进行修改

typedef int DataType_t;
{

}

构造记录顺序表SequenceList各项参数(顺序表的首地址 + 顺序表的容量 + 顺序表中最后有效元素的下标)的结构体

typedef struct SequenceList
{
    DataType_t *Data;  // 记录顺序表首地址
    unsigned int Size; // 记录顺序表的容量
    int Last;          // 顺序表中最后元素的下标

} SeqList_t;

順序表的初始化

- 創建一個順序表,爲其申請空間并對其容量和最後有效元素下標進行賦值

SeqList_t *SeqList_Creat(unsigned int size)
{
    SeqList_t *Manager=(SeqList_t*)calloc(1,sizeof(Manager));
    if(NULL == Manager)
    {
        rperror("calloc memory of Manager is failed\n");
        exit(-1);
    }
	
    Manger->Data=(DataType_t *)calloce(size, sizeof(DataType_t));
    if(NULL == Manager=>Data)
    {
        perror("calloc of Manager->Data is failed\n");
		free(Manager);
        exit(-1);
    }
	
	Manager->Size=Size;
	Manager->Last=-1;
	
	return Manager
}

順序表數據的插入

在插入數據前,我們需要對順序表中是否還具有空餘容量進行判斷

- 判斷順序表是否仍有容量

bool SeqList_IsFull(SeqList_t *Manager)
{
	return (Manager->Last+1==Manager->Size) ? true:false;
}

- 指定位置插入

bool SeqList_Add(SeqList_t *Manager, DataType_t Data, unsigned int pos)
{
	if(SeqList_IsFull(Manager))
	{
		printf("SequenceList is Full!\n");
		return false;
	}
	
	for(int i = Manager-Last;i>=pos-1;i--)
	{
		Manager->Data[i+1]=Manager->Data[i];
	}
	
	Manager->Data[pos-1]=Data;
	Manager->Last+1;
}

- 尾插

bool SeqList_HeadAdd(SeqList_t *Manager, DataType_t Data, unsigned int pos)
{
	if(SeqList_IsFull(Manager))
	{
		printf("SequenceList is Full!\n");
		return false;
	}
	
	Manager->Data[++Manager->Last]=Data;
}

順序表數據的刪除

bool SeqList_Del(SeqList_t *Manager, DataType_t DestVal)
{
    // 1.判断顺序表是否为空
    if (SeqList_IsEmpty(Manager))
    {
        printf("SequenceList is Empty!\n");
        return false;
    }
	// 2.循環遍歷尋找目標值
	for(int i=0;i<Manager->Last;i++)
	{
		if(Manager-Data==DestVal)
		{
			// 3.判斷是否在尾部
			if(i+1==Manager->Last)
			{
				Manager->Last--;
				return true;
			}
			else
			{
				for(int j=i+1;j<Manager->Last;j++)
				{
					Manager->Data[j-1]=Manager->Data[j];
				}
				Manager->Last--;
				return true;
			}
		}
		else 
		{
			return false;
		}
	}
}

順序表數據的修改

bool SeqList_Change(SeqList_t *Manager,DataType_t DestVal,DataType_t New)
{
	for(int i=0;i<Manager->Last;i++)
	{
		if(Manager-Data==DestVal)
		{
			Manager->Date[i]==New;
			return true;
		}
		else 
		{
			return false;
		}
}

順序表數據的查找

int SeqList_Find(SeqList_t *Manager,DataType_t DestVal)
{
	for(int i=0;i<Manager->Last;i++)
	{
		if(Manager-Data==DestVal)
		{
			return i+1;
		}
		else 
		{
			return -1;
		}
}

順序表的變例

void SeqList_Show(SeqList_t *Manager)
{
	printf("順序表中的元素内容");
}

void SeqList_Change(SeqList_t *Manager)
{
	for(int i=0;i<Manager->Last;i++)
	{
		SeqList_Show(Manager);
	}
}

标签:return,int,Data,SeqList,改查,Manager,DataType,增刪,順序表
From: https://www.cnblogs.com/eon4051/p/18148963

相关文章

  • 【开源】使用Python+Flask+Mysql快速开发一个用户增删改查系统
    项目演示项目本身很简单,增删改查是几乎所有系统的骨架。正所谓万丈高楼平地起,学会了增删改查,航母就指日可待了:),光速入门,直接看演示图:项目地址https://github.com/mudfish/python-flask-user-crudFlask框架介绍说白了就是一个Web框架,能够让你快速开发出Pythonweb应用。简单易......
  • SpringBoot+MybatisPlus 增删改查学习第三章 (C#转JAVA)
    packagecom.example.demo;importcom.baomidou.mybatisplus.core.conditions.query.QueryWrapper;importcom.example.demo.entity.Person;importcom.example.demo.mapper.PersonMapper;importcom.example.demo.service.PersonService;importorg.junit.jupiter.api.Test;i......
  • Python对Sql Server数据库增删改查
    Python对SqlServer数据库增删改查#如果电脑上没有安装mssql模块,则要安装mssql模块 安装模块的执行命令为 pip install pymssqlimport pymssql def ExecuteNonQuery(sqlStr,paras):    try:        connect = pymssql.connect(server='192.168.1.23:1......
  • 增删改查
    --1切换到master数据库中usemastergo--2判断cpms数据库是否存在,若存在则删除,begin和end可以相当于c#中的大括号{}ifexists(select*fromsys.sysdatabaseswherename='cpms')--存在ture不存在falsedropdatabasecpmsgo--3创建cpms数据库createdatabasecpmso......
  • 若依RuoYi-Vue代码生成,新建一个增删改查模块
    启动ruoyi-ui,登录前端后台 以cti_faq问答对表为例。首先在mysql数据库中建张cti_faq表CREATETABLE`cti_faq`(`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'编号',`question`varchar(255)DEFAULTNULLCOMMENT'问题内容',`answer`textCOMMENT'答案......
  • flask+mysql实现基础增删改查
    原文:https://blog.csdn.net/qq_29720657/article/details/124522898?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171255890916800226584900%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=171255890916800226584900&biz_......
  • JAVA入门——对象数组:对象数组进行增删改查
    题目:不使用数据库,定义长度为3的数组,存储1~3名学生对象作为初始值(即1名2名3名都可以),学生对象的学号具有唯一性。学生属性:学号,姓名,年龄。要求一:再添加一个学生对象,遍历所有学生要求二:通过学号删除学生信息,遍历所有学生要求三:通过学号查询学生信息,若存在则修改年龄,遍历所有......
  • 操作user表的CRUD 增删改查
    文章目录xml的实现在conf.xml中注册mapper查找增加总结xml的实现定义sql映射.xml文件在conf.xml中注册mapper查找看下图写代码的逻辑顺序成功我在数据库新建了一条记录,查询同样成功packagecom.zhang.mybatis.sy3;importjava.io.IOException;impor......
  • Python之curd增删改查
    增append增加In[1]:hero=['1','2']In[2]:hero.append('3')In[3]:heroOut[3]:['1','2','3']extend多个增加In[3]:heroOut[3]:['1','2','3']In[4]:hero.......
  • Mybatis-核心配置文件 / Mybatis增删改查
    1.核心配置文件1.1.概述核心配置文件是MyBatis框架中用于集中定义全局配置信息的XML文件,其内部包含了一系列预设标签,用于设置数据库连接、对象映射、类型处理等关键参数。这些标签遵循特定的排列顺序,尽管并非所有标签都是强制性的,但按照推荐顺序编写有助于保持配置文件的清......