C语言数据结构(3)--顺序存储线性表

0. 系列文章索引

点此查看系列文章

1. 顺序存储线性表的概念

线性表简单的说就是有序的元素集合,像Java里面的List。

数组其实就是一个简单的线性表,但是更多的只能代表线性表的一种存储结构,如果是一个完善的线性表的话,还应该包括删除元素、查询元素、修改元素等操作。

线性表的存储结构最常见的有两大类,一个是用一维数组,一个使用链表,本篇演示一维数组实现的线性,即顺序存储线性表;链表实现的线性表可以称之链式存储线性表

2. 有哪些操作

  1. 显示线性表元素个数
  2. 展示线性表的所有元素
  3. 获取指定位置元素
  4. 在指定位置插入元素
  5. 删除指定位置元素
  6. 清空线性表

大体上常用的也就这些操作了,下面我们来具体实现下。

3. 代码实现

/*
* 顺序存储线性表
* 作者:熊猫大大
* 时间:2019-09-22
*/
#include<stdio.h>
#define MAXSIZE 100 //最大元素个数

// 线性表的结构体
typedef struct {
	int data[MAXSIZE];
	int count;//当前元素个数
}SequenceList;

// 获取元素个数
int getCount(SequenceList *list)
{
	return list->count;
}

// 显示所有元素
void printList(SequenceList *list)
{
	int i;
	printf("\n所有元素:");
	for (i = 0; i < list->count; i++)
	{
		printf("%d", list->data[i]);
	}
}

// 获取指定位置元素,返回值放入result指向元素
int getData(SequenceList *list, int index, int *result)
{
	if (index<0 || index>list->count - 1)
	{
		return 0;//0表示失败
	}
	*result = list->data[index];
	return 1;//1表示成功
}

// 插入元素
int insertData(SequenceList *list, int index, int input)
{
	int i;
	if (list->count >= MAXSIZE) //满了
	{
		return 0;
	}
	if (index<0 || index>list->count) //不在合理范围
	{
		return 0;
	}
	if (index != list->count) //插入数据不在表尾
	{
		for (i = list->count; i >= index; i--)
		{
			list->data[i] = list->data[i - 1];
		}
	}
	list->data[index] = input;
	list->count++;
	return 1;
}
// 删除指定位置元素
int deleteData(SequenceList *list, int index)
{
	int i;
	if (index<0 || index>list->count - 1) //不在合理范围
	{
		return 0;
	}
	for (i = index; i < list->count - 1; i++)
	{
		list->data[i] = list->data[i + 1];
	}
	list->count--;
	return 1;
}
// 清空所有元素
int clearData(SequenceList *list)
{
	list->count = 0;
}

// 程序入口
int main()
{
	//初始化
	SequenceList sequenceList;
	SequenceList *list = &sequenceList;
	list->count = 0;
	//插入元素
	insertData(list, 0, 1);
	insertData(list, 1, 2);
	insertData(list, 2, 3);
	printList(list);
	//获取元素
	int result = -1;
	getData(list, 1, &result);
	printf("\ngetData:%d", result);
	//删除指定位置元素
	deleteData(list, 1);
	printList(list);
	//清空元素
	clearData(list);
	printList(list);
	printf("\n");
	return 1;
}

如有问题请扫码联系我
在这里插入图片描述

已标记关键词 清除标记
课程简介: 历经半个多月的时间,Debug亲自撸的 “企业员工角色权限管理平台” 终于完成了。正如字面意思,本课程讲解的是一个真正意义上的、企业级的项目实战,主要介绍了企业级应用系统中后端应用权限的管理,其中主要涵盖了六大核心业务模块、十几张数据库表。 其中的核心业务模块主要包括用户模块、部门模块、岗位模块、角色模块、菜单模块和系统日志模块;与此同时,Debug还亲自撸了额外的附属模块,包括字典管理模块、商品分类模块以及考勤管理模块等等,主要是为了更好地巩固相应的技术栈以及企业应用系统业务模块的开发流程! 核心技术栈列表: 值得介绍的是,本课程在技术栈层面涵盖了前端和后端的大部分常用技术,包括Spring Boot、Spring MVC、Mybatis、Mybatis-Plus、Shiro(身份认证与资源授权跟会话等等)、Spring AOP、防止XSS攻击、防止SQL注入攻击、过滤器Filter、验证码Kaptcha、热部署插件Devtools、POI、Vue、LayUI、ElementUI、JQuery、HTML、Bootstrap、Freemarker、一键打包部署运行工具Wagon等等,如下图所示: 课程内容与收益: 总的来说,本课程是一门具有很强实践性质的“项目实战”课程,即“企业应用员工角色权限管理平台”,主要介绍了当前企业级应用系统中员工、部门、岗位、角色、权限、菜单以及其他实体模块的管理;其中,还重点讲解了如何基于Shiro的资源授权实现员工-角色-操作权限、员工-角色-数据权限的管理;在课程的最后,还介绍了如何实现一键打包上传部署运行项目等等。如下图所示为本权限管理平台的数据库设计图: 以下为项目整体的运行效果截图: 值得一提的是,在本课程中,Debug也向各位小伙伴介绍了如何在企业级应用系统业务模块的开发中,前端到后端再到数据库,最后再到服务器的上线部署运行等流程,如下图所示:
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页