数据机构-2

线性表

概念

顺序表

示例:创建一个存储学生信息的顺序表

表头(Tlen总长度, Clen当前长度)

函数

#include <seqlist.c>

#include <stdio.h>
#include <stdlib.h>
#include "seqlist.h"
#include <string.h>
SeqList *CreateSeqList(int len)
{SeqList *s1 = (SeqList *)malloc(sizeof(SeqList));if(NULL == s1){perror("Create SeqList malloc fail");return NULL;}s1->head = (DATATYPE *)malloc(sizeof(DATATYPE)*len);if(NULL == s1->head){perror("create sqlist head malloc");return NULL;}s1->tlen = len;s1->clen = 0;return s1;
}int IsFullSeqList(SeqList *list)
{return list->clen == list->tlen;
}int InsertTailSeqList(SeqList *list, DATATYPE *data)
{if(IsFullSeqList(list)){return -1;}memcpy(&list->head[list->clen], data, sizeof(DATATYPE));++list->clen;return 0;
}
int get_size_seqlist(SeqList *list)
{return list->clen;
}
int ShowSeqList(SeqList *list)
{int len = get_size_seqlist(list);int i = 0 ;for(i = 0; i < len; ++i){printf("%s %c %d %d\n", list->head[i].name, list->head[i].sex, list->head[i].age, list->head[i].score);}return 0;
}int InsertPosSeqList(SeqList *list, DATATYPE *data, int pos)
{if(IsFullSeqList(list) || pos > list->clen){perror("insert fail");return -1;}int i = 0;for(i = list->clen; pos<i; --i){list ->head[i] = list->head[i-1];}memcpy(&list->head[pos], data, sizeof(DATATYPE));list->clen++;return 0;
}int FindSeqList(SeqList *list, char *name)
{int len = get_size_seqlist(list);\int i = 0;for(i = 0; i < len; ++i){if(0 == strcmp(list->head[i].name, name)){return i;}}return -1;
}DATATYPE* get_item_seqlist(SeqList *list, int pos)
{if(pos < 0 || pos >= list->clen){return NULL;}return &list->head[pos];
}int ModifySeqList(SeqList *list, char *name, DATATYPE *newdata)
{int ret = FindSeqList(list, name);if(-1 == ret){return -1;}memcpy(&list->head[ret], newdata, sizeof(DATATYPE));return 0;
}
int ClearSeqList(SeqList *list)
{list->clen = 0;return 0;
}int DestroySeqList(SeqList *list)
{free(list->head);free(list);return 0;
}int DeleteSeqList(SeqList *list, char *name)
{int ret = FindSeqList(list, name);if(ret < 0){printf("not find");return -1;}int i = ret;for(; i < list->clen; i++){memcpy(&list->head[i+1], &list->head[i], sizeof(list->head[0]));}list->clen--;
}

#include “seqlist.h”

#ifndef _SEQLIST_H
#define _SEQLIST_Htypedef struct person{char name[32];char sex;int age;int score;
}DATATYPE;typedef struct list{DATATYPE *head;int tlen;int clen;
}SeqList;SeqList *CreateSeqList(int len);
int DestroySeqList(SeqList *list);//free
int ShowSeqList(SeqList *list);//show
int InsertTailSeqList(SeqList *list, DATATYPE *data);//写
int IsFullSeqList(SeqList *list);//clen ?= tlen
int IsEmptySeqList(SeqList *list);
int InsertPosSeqList(SeqList *list, DATATYPE *data, int pos);//插入
int FindSeqList(SeqList *list, char *name);//find
int ModifySeqList(SeqList *list, char *old, DATATYPE *new);//修改
int DeleteSeqList(SeqList *list, char *name);//删除某
int ClearSeqList(SeqList *list);//clear all
int get_size_seqlist(SeqList *list);//clen = ?
DATATYPE *get_item_seqlist(SeqList *list, int pos);//get head[?]#endif

主函数


#include <stdio.h>
#include "seqlist.h"int main()
{DATATYPE data[] = {{"jack", 'm', 20, 90},{"tom", 'm', 21, 78},{"tony", 'f', 19, 42},{"sora", 'f', 23, 74},{"amy", 'f', 21, 69}};SeqList *s1 = CreateSeqList(10);InsertTailSeqList(s1, &data[0]);InsertTailSeqList(s1, &data[1]);InsertTailSeqList(s1, &data[2]);ShowSeqList(s1);printf("----------------------------------------\n");InsertPosSeqList(s1, &data[4], 2);ShowSeqList(s1);printf("----------------------------------------\n");int ret = FindSeqList(s1, "tony");if(-1 == ret){printf("not find\n");}else{DATATYPE *tmp = get_item_seqlist(s1, ret);printf("%s  %d\n", tmp->name, tmp->score);}printf("----------------------------------------\n");ModifySeqList(s1, "lisi", &data[4]);ShowSeqList(s1);printf("----------------------------------------\n");DeleteSeqList(s1, "tony");ShowSeqList(s1);ClearSeqList(s1);DestroySeqList(s1);return 0;
}

内存泄漏检测

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/549539.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

本地虚拟机平台Proxmox VE结合Cpolar内网穿透实现公网远程访问

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&…

深入探讨Python中的文件操作与文件IO操作【第141篇—Python实现】

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 深入探讨Python中的文件操作与文件IO操作 在Python编程中&#xff0c;文件操作和文件IO操作…

java类的定义及使用

1、类的定义 &#xff08;1&#xff09;类的重要性&#xff1a;是Java程序的基本组成单位&#xff1b; &#xff08;2&#xff09;类是什么&#xff1a;是对现实生活中一类具有共同属性和行为的事物的抽象&#xff0c;确定对象将会拥有的属性和行为&#xff1b; &#xff08…

mac清除dns缓存指令 mac清除缓存怎么清理

你是否曾经被要求清理dns缓存并刷新&#xff1f;清理dns缓存一般是由于修改了主机文件&#xff0c;或者想排除一些网络上的故障。在Mac上清除dns缓存需要使用命令行来实现。在本文中&#xff0c;软妹子将向大家介绍mac清除dns缓存指令&#xff0c;并展示mac清除缓存怎么清理。 …

【Hadoop】Hadoop的运行模式

目录 Hadoop 的运行模式1.本地模式1.1官方 Grep 案例1.2官方 WordCount 案例 2.伪分布式运行模式2.1启动 HDFS 并运行 MapReduce 程序2.1.1 配置集群&#xff0c;修改 Hadoop 的配置文件&#xff08;/hadoop/hadoop-2.7.7/etc/hadoop 目录下&#xff09;2.1.2 启动集群2.1.3 查…

数字人解决方案— SadTalker语音驱动图像生成视频原理与源码部署

简介 随着数字人物概念的兴起和生成技术的不断发展&#xff0c;将照片中的人物与音频输入进行同步变得越来越容易。然而&#xff0c;目前仍存在一些问题&#xff0c;比如头部运动不自然、面部表情扭曲以及图片和视频中人物面部的差异等。为了解决这些问题&#xff0c;来自西安…

Git——GitHub远端协作详解

目录 Git&GitHub1、将内容Push到GitHub上1.1、在GitHub上创建新项目1.2、upstream1.3、如果不想要相同的分支名称 2、Pull下载更新2.1、Fetch指令2.2、Fetch原理2.3、Pull指令2.4、PullRebase 3、为什么有时候推不上去3.1、问题复现3.2、解决方案一&#xff1a;先拉再推3.3…

民宿管理平台系统|基于springboot框架+ Mysql+Java+ Tomcat的民宿管理平台系统平台设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;ssm&#xff0c;springboot的平台设计与实现项目系统开发资源&#xff08;可…

注册个人小程序

访问地址 https://mp.weixin.qq.com/ 立即注册 选择小程序 注册 填写信息 登录邮箱 访问邮箱的链接激活账号 选择个人&#xff0c;填写信息 注册完成&#xff0c;即可登录进入填写信息

SinoDB数据库运行分析

SinoDB数据库运行主要从数据库互斥资源等待、数据库写类型、备份文件有效性、Chunk状态等15个方向进行分析&#xff0c;具体说明如下&#xff1a; 一、数据库互斥资源等待 检查项目 数据库互斥资源等待 检查命令 onstat -g con |head -20 说明 onstat -g con 查看目前数据处…

通过docker容器安装zabbix6.4.12图文详解(监控服务器docker容器)

一、相关环境及镜像 环境&#xff1a;ubuntu 22.04&#xff0c;zabbix-server6.4&#xff0c;mysql8.0 前提&#xff1a; 1&#xff09;先安装docker环境 2&#xff09;下载相关镜像 docker pull mysql:8.0 docker pull zabbix/zabbix-java-gateway:alpine-6.4-latest docker …

微信小程序选择器picker的使用(省市区)

index.wxml picker中的 moderegion模式&#xff0c;这里同element中的select不同的是&#xff0c;不需要自己在绑定数据原&#xff0c;默认就包含了省市区的整体数据 <view class"section"><view class"section__title">省市区选择器</vie…