首页 > 其他分享 >顺序表???

顺序表???

时间:2024-04-24 20:33:17浏览次数:25  
标签:顺序 return Addr SeqList 元素 Manager

/********************************************************************************************************
*
*
* 提高可移植性
*
*
*
* Copyright (c)  2023-2024   cececlmx@126.com   All right Reserved
* ******************************************************************************************************/

//指的是顺序表中的元素的数据类型,用户可以根据需要进行修改
typedef int  DataType_t;

//构造记录顺序表SequenceList各项参数(顺序表的首地址 + 顺序表的容量 + 顺序表中最后有效元素的下标)的结构体
typedef struct SequenceList
{
	DataType_t * Addr;		//记录顺序表首地址
	unsigned int Size;		//记录顺序表的容量
	int			 Last;      //顺序表中最后元素的下标	

}SeqList_t;


//创建顺序表并对顺序表进行初始化
SeqList_t * SeqList_Create(unsigned int size)
{
	//1.利用calloc为顺序表的管理结构体申请一块堆内存
	SeqList_t *Manager = (SeqList_t *)calloc(1,sizeof(Manager));

	if(NULL == Manager)
	{
		perror("calloc memory for manager is failed");
		exit(-1); //程序异常终止
	}

	//2.利用calloc为所有元素申请堆内存
	Manager->Addr = (DataType_t *)calloc(size,sizeof(DataType_t));

	if (NULL == Manager->Addr)
	{
		perror("calloc memory for element is failed");
		free(Manager);
		exit(-1); //程序异常终止
	}

	//3.对管理顺序表的结构体进行初始化(元素容量 + 最后元素下标)
	Manager->Size = size;	//对顺序表中的容量进行初始化
	Manager->Last = -1;		//由于顺序表为空,则最后元素下标初值为-1
	
	return Manager;
}


//判断顺序表是否已满
bool SeqList_IsFull(SeqList_t *Manager)
{
	return (Manager->Last + 1 == Manager->Size) ? true : false;
}


//向顺序表的尾部加入元素
bool SeqList_TailAdd(SeqList_t *Manager, DataType_t Data)
{
	//1.判断顺序表是否已满
	if ( SeqList_IsFull(Manager) )
	{
		printf("SequenceList is Full!\n");
		return false;
	}

	//2.如果顺序表有空闲空间,则把新元素添加到顺序表尾部
	Manager->Addr[++Manager->Last] = Data;

	return true;
}

//向顺序表的头部加入元素
bool SeqList_HeadAdd(SeqList_t *Manager, DataType_t Data)
{
	//1.判断顺序表是否已满
	if ( SeqList_IsFull(Manager) )
	{
		printf("SequenceList is Full!\n");
		return false;
	}

	//2.如果顺序表有空闲空间,则需要把顺序表所有元素向后移动1个单位
	for (int i = Manager->Last;i >= 0;i--)
	{
		Manager->Addr[i+1] = Manager->Addr[i];
	}

	//3把新元素添加到顺序表的头部,并且更新管理结构体中的元素下标+1
	Manager->Addr[0] = Data;
	Manager->Last++;

	return true;
}



//判断顺序表是否已满
bool SeqList_IsEmpty(SeqList_t *Manager)
{
	return (-1 == Manager->Last) ? true : false;
}



//删除顺序表的元素
bool SeqList_Del(SeqList_t *Manager,DataType_t DestVal)
{
	//1.判断顺序表是否为空
	if ( SeqList_IsEmpty(Manager) )
	{
		printf("SequenceList is Empty!\n");
		return false;
	}

	//2.此时需要查找目标值是否在顺序表中
	if (存在目标值)
	{
		//刚好在尾部
		//刚好在头部
		//刚好在中间
	}
	else
	{
		return false;
	}

}


//遍历顺序表的元素
SeqList_Print(SeqList_t *Manager)




int main(int argc, char const *argv[])
{

	//1.创建顺序表
	SeqList_t * Manager = SeqList_Create(10);
	




	return 0;
}



标签:顺序,return,Addr,SeqList,元素,Manager
From: https://www.cnblogs.com/ZGLi/p/18156276

相关文章

  • 读《我和Labview》5条件结构和顺序结构
    5条件结构和顺序结构条件结构布尔类型条件选择结构其它数据类型的条件选择是否要设置默认分支?合理设置悬着条件隧道避免把控件放在条件结构内选择函数顺序结构程序执行顺序创建顺序结构层叠式顺序结构平铺式顺序结构无形胜有形的最高境界6用户自定义控件7控件的局......
  • 顺序表和链表的练习题
    顺序表题目一:题目分析:该题目需要先对顺序表进行遍历至元素x正确插入位置,再对顺序表完成插入操作。因此涉及到for循环与if语句的使用代码实现/********************************************************************** name : SequenceList_insert* function:实现插......
  • 顺序表
    /***************************************************************************author:18975491291@163.comdata:2024/04/22function:删除顺序表工中下标为p(0<p<length-1)的元素,成功返回1,否则返回0,并将被删除元素的值赋给e。noto:NoneCopyRight(c)20......
  • 删除顺序表L中下标为p(0≤p≤length-1)的元素,成功返回1,否则返回0,并将被删除元素的值赋给
    /********************************************************************************************************** filename: Zqh_splist_4.22.2.c* author : keyword2024@163.com* date : 2024/04/22* function: 删除顺序表L中下标为p(0≤p≤length-1)的元素,成功返回1......
  • 顺序表的操作例题
    顺序表插入操作题目:已知一个顺序表L,其中的元素递增有序排列,设计一个算法,插入一个元素x(x为int型)后保持该顺序表仍然递增有序排列(假设插入操作总能成功)。代码/********************************************name:InsElem*function:递增有序排列插入一个元素x*ar......
  • 已知一个顺序表L,其中的元素递增有序排列,设计一个算法,插入一个元素x(x为t型)后保持该顺序
    /********************************************************************************************************** filename: Zqh_splist_4.22.1.c* author : keyword2024@163.com* date : 2024/04/22* function: 已知一个顺序表L,其中的元素递增有序排列,设计一个算法......
  • 已知一个顺序表L,其中的元素递增有序排列,设计一个算法,插入一个元素x(x为int型)后保持该
    已知一个顺序表L,其中的元素递增有序排列,设计一个算法,插入一个元素x(x为int型)后保持该顺序表仍然递增有序排列(假设插入操作总能成功)。/********************************************************************* 函数名称: SeqListInsert* 函数功能:一个顺序表L,其中的元素......
  • 单向顺序链表的创建,增,删,减,查
    单向顺序链表的创建,增,删,减,查/********************************************************************* filename: 单向顺序链表的创建,增,删,减,查* author :17647576169@163.com* date : 2024-4-22* function:* note :None** CopyRight(c)20241764......
  • 删除顺序表L中下标为p(0<≤ p ≤length-1)的元素,成功返回1,否则返回0,并将待删除的元素的
    /********************************************************name:DelElement* function:(笔试题)删除顺序表L中下标为p(0<≤p≤length-1)的元素,*成功返回1,否则返回0,并将待删除的元素的值赋给e。*argument*@p:需要插入......
  • 基于C语言的顺序表的建立,及各类功能函数实现
    常规链表建立列举常见的顺序表功能实现函数,进行编程练习常规顺序表(sequeue)建立定义一个顺序表的大小,结构体中采用数组而不是另一个堆内存空间表示存储的数据信息。typedefintdata_t;//定义顺序表中数据元素的数据类型#defineN20//定义顺序表的容量typed......