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

顺序表数据结构

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 顺序表
  • 一 什么是顺序表
  • 二 顺序表的组成结构
  • 顺序表的初始化
  • 顺序表的销毁
  • 顺序表的头插
  • 顺序表的头删
  • 顺序表的尾插
  • 顺序表的尾删
  • 在某一个节点中插入数据
  • 在某一个节点中删除数据
  • 修改数据

#include"pli.h"
Plist create_list()
{
	Plist L = (list*)malloc(sizeof(list));
	if (L == NULL)
	{

		printf("创建失败");
		return NULL;

	}
	L->len = 0;
	cout << "创建成功";
	return L;

}
int input_list(Plist L)
{
	int n;
	printf("请输入学生个数");
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		printf("请输入学号");
		cin >> L->data[i].id;
		printf("请输入名字");
		cin>> L->data[i].name;
		printf("请输入专业");
		cin>> L->data[i].major;
		printf("请输入年龄");
		cin>> L->data[i].age;
		L->len++;
	}
	return 0;
}
int full(Plist L)
{
	if (L->len == MAX)
	{
		return 1;
	}
	else
		return 0;
}
int insert_list(Plist L, int pos, student e)
{
	int sub = pos - 1;
	if (sub<0||sub>L->len||L->len==0||full(L))
	{
		printf("插入失败");
		return 0;

	}
	for (int i = L->len - 1; i >= sub; i--)
	{
		L->data[i + 1] = L->data[i];
	}
	L->data[sub] = e;
	L->len++;
	printf("插入成功");
	return 0;
}
int output_stu(Plist L)
{
	for (int i = 0; i < L->len; i++)
	{
		printf("学号");
		printf("%d\n", L->data[i].id);
		printf("姓名");
		printf("%s\n", L->data[i].name);
		printf("专业");
		printf("%s\n", L->data[i].major);
		printf("年纪");
		printf("%d\n", L->data[i].age);

	}
	return 0;

}
int delete_list(Plist L, int pos)
{

	int sub = pos - 1;
	if (sub < 0 || sub>L->len - 1 || L == NULL || full(L))
	{
		printf("删除失败");
		return -1;

	}
	for (int i = sub; i < L->len - 1; i++)
	{
		L->data[i] = L->data[i + 1];

	}
	L->len--;
	return 0;
}
int serch_list(Plist L, int pos)
{
	int sub=pos - 1;
	if (sub<0 || sub>L->len - 1 || L == NULL || L->len == 0)
	{
		printf("寻找失败");
		return -1;
	}
	printf("%d\t%s\t%s\t%d\n", L->data[sub].id, L->data[sub].name, L->data[sub].major, L->data[sub].age);
	return 0;
}
int change_list(Plist L, int pos, student f)
{
	int sub = pos - 1;
	if (sub<0 || sub>L->len - 1 || L == NULL || L->len == 0)
	{
		printf("寻找失败");
		return -1;
	}
	L->data[sub] = f;
	return 0;

}
int insert_first(Plist L, student f)
{
	insert_list(L, 1,  f);
	return 0;
}
int insert_rear(Plist L, student f)
{
	insert_list(L, L->len+1, f);
	return 0;
}
int repeat(Plist L)
{
	for(int i=0;i<L->len;i++)
		for (int j = i; j < L->len; j++)
		{
			if (strcmp(L->data[i].name, L->data[j].name) == 0)
			{
				delete_list(L, j + 1);
				j--;
			}
		}
	return 0;
}


http://www.kler.cn/news/311229.html

相关文章:

  • TCP 和 UDP 协议的区别?
  • Open3D(C++) 点云中的植被信息提取
  • BPG的定义和工作原理是什么?
  • 定制相亲交友系统如何提升用户体验
  • SQL:子查询
  • Qwen 2.5:阿里巴巴集团的新一代大型语言模型
  • neo4j安装启动教程+对应的jdk配置
  • 巧用服务名解决主备集群中主库DMDSC节点间会话负载不均衡的问题
  • Activiti7《第二式:破剑式》——工作流中的以柔克刚
  • 算法:计算二叉树的最大深度(Java实现)
  • 翻页时钟 2.0-自动置顶显示,点击小时切换显示标题栏不显示标题栏-供大家学习研究参考
  • 【C++语言】模版的进一步学习
  • 网页打开时,下载的文件svg+xml类型有什么作用?
  • 99AutoML 自动化机器学习实践--NNI 自动化机器学习工具包
  • axure的下载,激活,汉化全过程,多图
  • VirtualBox增加磁盘并给docker用
  • 大数据之Spark(一)
  • 【LabVIEW】条件结构的使用
  • VMWARE安装Ubuntu24.04桌面版的问题
  • 由于 Python 环境不一致导致的No module named ‘selenium‘
  • 除了递归算法,要如何优化实现文件搜索功能
  • 改进版field-sensitive指针分析算法
  • vue2+js项目升级vue3项目流程
  • Vue 常用高级指令解析
  • @JSONField(name=xx)、@JsonProperty(value=xx)和@SerializedName的使用
  • Qt_控件的QWidget属性介绍
  • 2024年轻人驯化AI指南
  • CSS中隐藏滚动条的同时保留滚动功能
  • 桂花网蓝牙网关与智能手环联合应用于职业健康监测
  • 重修设计模式-结构型-装饰器模式