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

数据结构day3

一、思维导图

二、

#include "seqlist.h"#include<myhead.h>
int main(int argc, const char *argv[])
{//创建一个顺序表SeqListPtr L = list_create();if(NULL == L){return -1;}//调用添加函数list_add(L,123);list_add(L,435);list_add(L,856);list_add(L,657);list_add(L,346);//调用遍历函数list_show(L);//调用插入函数list_insert_pos(L,0,777);list_insert_pos(L,2,777);list_insert_pos(L,7,777);//遍历顺序表list_show(L);//调用删除函数list_delete_pos(L,2);//遍历顺序表list_show(L);//按值查找元素int res =list_search_value(L,657);printf("您查找的元素位置:%d\n",res+1);//按位置进行修改list_update_pos(L,2,999);//按值进行修改list_update_value(L,346,666);//遍历顺序表list_show(L);return 0;
}

#include "seqlist.h"//定义顺序表的创建函数
SeqListPtr list_create()
{//在堆区申请一个顺序表的大小空间SeqListPtr L = (SeqListPtr)malloc(sizeof(SeqList));if(NULL == L){printf("创建失败\n");return NULL;}//申请成功//初始化memset(L->data,0,sizeof(L->data));L->len = 0;printf("创建成功\n");return L;
}//判空函数
int list_empty(SeqListPtr L)
{return L->len==0;
}//判满函数
int list_full(SeqListPtr L)
{return L->len==MAX;
}//添加元素
int list_add(SeqListPtr L,datatype e)
{//判断if(NULL == L || list_full(L)){printf("添加失败\n");return -1;}//将要添加的元素放在最后一个位置L->data[L->len] = e;//长度增加L->len++;printf("添加成功\n");return 0;
}//遍历顺序表
void list_show(SeqListPtr L)
{//判断if(NULL == L || list_full(L)){printf("遍历失败\n");return;}//遍历printf("顺序表中的元素分别是:");for(int i=0;i<L->len;i++){printf("%d\t",L->data[i]);}printf("\n");
}//定义任意位置插入函数
int list_insert_pos(SeqListPtr L,int pos,datatype e)
{//判断if(NULL == L || list_full(L) ){printf("插入失败\n");return 0;}if(pos<0||pos>L->len){printf("插入位置有误\n");return 0;}//将pos位置腾空for(int i=L->len-1;i>=pos;i--){L->data[i+1] = L->data[i];}//插入新数据L->data[pos] = e;//插入成功//表长加1L->len++;printf("插入成功\n");return 0;
}//任意位置删除函数
int list_delete_pos(SeqListPtr L,int pos)
{//判断if(NULL == L || list_full(L) ){printf("删除失败\n");return 0;}if(pos<0||pos>=L->len){printf("删除位置有误\n");return 0;}//删除for(int i=pos+1;i<L->len;i++){L->data[i-1] = L->data[i];}//表长变化L->len--;printf("删除成功\n");return 0;
}//按值查找位置函数
int list_search_value(SeqListPtr L,datatype e)
{//判断合法性if(NULL == L || list_full(L) ){printf("查找失败\n");return 0;}//遍历查找for(int i=0;i<L->len;i++){if(L->data[i] == e){//返回下标return i;}}printf("未找到元素\n");return -1;
}//按位置进行修改
int list_update_pos(SeqListPtr L,int pos,datatype e)
{//判断if(NULL == L ){printf("修改失败\n");return -1;}if(pos<0||pos>=L->len){printf("修改位置有误\n");return 0;}//修改L->data[pos] = e;printf("修改成功\n");return 0;
}//按值进行修改
int list_update_value(SeqListPtr L,datatype old_e,datatype e)
{//判断合法性if(NULL == L || list_empty(L)){printf("修改失败\n");return -1;}//根据旧值查找位置int res = list_search_value(L,old_e);if(res == -1){printf("没查到要修改的值\n");}//根据查找到的位置进行更改list_update_pos(L,res,e);
}

#ifndef SEQLIST_H
#define SEQLIST_H
#include <myhead.h>#define MAX 20 			//顺序表最大容量
typedef int datatype; 	//数据元素类型//定义顺序表结构类型
typedef struct 
{datatype data[MAX]; 	//存放顺序表的数组int len; 				//顺序表长度
}SeqList,*SeqListPtr;//声明顺序表的创建函数
SeqListPtr list_create();//判空函数
int list_empty(SeqListPtr L);//判满函数
int list_full(SeqListPtr L);//添加元素
int list_add(SeqListPtr L,datatype e);//遍历顺序表
void list_show(SeqListPtr L);//顺序表按位置插入元素函数
int list_insert_pos(SeqListPtr L,int pos,datatype e);//任意位置删除元素
int list_delete_pos(SeqListPtr L,int pos);//按值查找位置函数
int list_search_value(SeqListPtr L,datatype e);//按位置进行修改
int list_update_pos(SeqListPtr L,int pos,datatype e);//按值进行修改
int list_update_value(SeqListPtr L,datatype old_e,datatype e);#endif

http://www.lryc.cn/news/402558.html

相关文章:

  • 免费的数字孪生平台助力产业创新,让新质生产力概念有据可依
  • mtsys2 编译 qemu 记录
  • 【Python数据分析】数据分析三剑客:NumPy、SciPy、Matplotlib中常用操作汇总
  • STM32智能家居电力管理系统教程
  • C# 邮件发送
  • Kotlin 协程简化回调
  • 帝王蝶算法(EBOA)及Python和MATLAB实现
  • 【学术会议征稿】第六届信息与计算机前沿技术国际学术会议(ICFTIC 2024)
  • PHP MySQL 读取数据
  • 点亮 LED-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板
  • 从0到1搭建数据中台(4):neo4j初识及安装使用
  • 【20】读感 - 架构整洁之道(二)
  • js vue axios post 数组请求参数获取转换, 后端go参数解析(gin框架)全流程示例
  • 揭秘郭采洁浪漫升级
  • 数据结构(Java):力扣牛客 二叉树面试OJ题(一)
  • 在国产芯片上实现YOLOv5/v8图像AI识别-【1.3】YOLOv5的介绍及使用(训练、导出)更多内容见视频
  • 逻辑门的题目怎么做?
  • CentOS 7报错:yum命令报错 “ Cannot find a valid baseurl for repo: base/7/x86_6 ”
  • 51单片机STC89C52RC——18.1 HC-SR04超声波测距
  • WordPress与 wp-cron.php
  • bb-------
  • 数据挖掘与分析部分实验与实训项目报告
  • Python中使用SpeechLib实现文本转换语音朗读的示例(修正bug)
  • 政安晨【零基础玩转各类开源AI项目】基于Ubuntu系统部署Hallo :针对肖像图像动画的分层音频驱动视觉合成
  • Spring Boot1(概要 入门 Spring Boot 核心配置 YAML JSR303数据校验 )
  • 电脑屏幕录制怎么弄?分享3个简单的电脑录屏方法
  • idea双击没有反应,打不开
  • 关于UniApp使用的个人笔记
  • autoware.universe源码略读(3.16)--perception:object_range_splitter
  • 深度学习落地实战:人脸五官定位检测