线性表的顺序表示和实现 (创建,插入,删除,查找)数据结构 严蔚敏(C语言版)代码实现
实现工具:dev
顺序表功能:
创建一个空的线性表;
在线性表中插入元素;
在线性表中删除元素;
在线性表中查找元素;
代码:(详解请看注释)
#include<stdio.h>
#include<stdlib.h>//动态分配需要的头文件
#define LIST_INIT_SIZE 100
#define LISTNCREAMENT 10
#define OK 1
#define FALSE 0
#define OVERFLOW 2//溢出
typedef float ElemType;
typedef int Status;
//线性表动态分配内存的顺序存储结构
typedef struct
{ElemType *elem;//存储的基地址 int length;//当前长度 int listsize;//当前分配的最大容量
}SqList;
ElemType * p,* q,e;//注意,e要定义为全局变量
ElemType * newbase;//若存储不够的话,新分配的基地址
//创建线性表 (空表)
Status InitList_Sq(SqList &L)
{L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));//为顺序表分配一片连续的存储空间 L.length=0;//初始化当前长度 L.listsize=LIST_INIT_SIZE;//初始化当前最大容量 return OK;
}
//线性表的插入
Status ListInsert_Sq(SqList &L,int i,ElemType e)
{if(i<1||i>L.length+1)//注意长度+1 {return FALSE;}if(L.length>L.listsize)//若长度超过了当前最大容量,则需要新开辟空间 {//realloc的使用 newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTNCREAMENT)*sizeof(ElemType));if(!newbase)//判断新空间是否开辟 {exit(OVERFLOW);}L.elem=newbase;//将结构体中的数据更新 L.listsize+=LISTNCREAMENT;}q=&(L.elem[i-1]);//p指向的是第i个元素 for(p=&L.elem[L.length-1];p>=q;--p)//插入时,需要从最后一个元素开始往后挪//p指向的是数据中的最后一个元素,其中第i个元素也要进行挪位 {*(p+1)=*p; }*q=e;//将插入的元素e插入进去 ++L.length;//顺序表的长度加一 return OK;}
//删除操作
ElemType ListDelete_Sq(SqList &L,int i, ElemType &e)
{if(i<1||i>L.length)//注意边界 {return FALSE;}p=&L.elem[i-1];//p是要删除的第i个元素 e=*p;//将删除的元素赋值给e q=L.elem+L.length-1;//表尾元素的位置 for(++p;p<=q;++p)//将元素往前移动 {*(p-1)=*p;}--L.length;//长度减一 return e; }
//查找
int LocateElem_Sq(SqList L,ElemType e)
{int i;i=1;while(i<=L.length&&L.elem[i-1]!=e){++i;}if(i<L.length){return i;}else return FALSE;}
int main()
{Status i,j;SqList La;//创建空表 InitList_Sq(La);//将表赋值为1 2 3 4 5 for(i=1;i<=5;i++){ListInsert_Sq(La,i,i);}//输出顺序表 for(i=0;i<5;i++){printf("%f ",La.elem[i]);}printf("\n");//在顺序表的第二个位置插入11 ListInsert_Sq(La,2,11);//输出新表 for(i=0;i<La.length;i++){printf("%f ",La.elem[i]);}printf("\n");//删除顺序表的第4个元素 ListDelete_Sq(La,4,e);for(i=0;i<La.length;i++){printf("%f ",La.elem[i]);}printf("\n");//查找顺序表中元素11,并返回其位置 j=LocateElem_Sq(La,11);printf("%d ",j);return 0;
}
线性表的顺序表示和实现 (创建,插入,删除,查找)数据结构 严蔚敏(C语言版)代码实现相关推荐
- 构建线性表的c语言代码,数据结构严蔚敏C语言版—线性表顺序存储结构(顺序表)C语言实现相关代码...
1.运行环境 这里说明一下这里所有的C语言代码都是基于code::blocks 20.03编译运行的.当然一些其他集成开发环境应该也是可以的,个人不太喜欢功能太过强大的IDE,因为那同样意味着相关设置 ...
- 数据结构严蔚敏C语言版—线性表顺序存储结构(顺序表)C语言实现相关代码
数据结构严蔚敏C语言版-线性表顺序存储结构(顺序表)C语言实现相关代码 1.运行环境 2.准备工作 1)项目构建 1>新建一个SeqList项目 2>新建两个文件Sources和Heade ...
- 大话西游之王道考研数据结构第一讲---线性表的顺序表示
大话西游之王道考研数据结构第一讲---线性表的顺序表示 写在前面的话 王道考研数据结构是一本非常好的书,本系列所有的内容是按照其书进行讲述的,所以您可以以那本书作为主要内容,这个做参考. 大学时候,在 ...
- 数据结构源码笔记(C语言):线性表的顺序表示
/* SeqList.c*/ /*线性表的顺序表示:函数实现*/#include <stdio.h> #include <stdlib.h> //#include " ...
- c语言建立线性表(顺序储存,链式储存,循环,双向)全
c语言建立线性表 顺序储存 储存结构 初始化(建立)顺序表 查找操作 一.按值查找,找到返回对应的下标 二.按照下标返回元素 插入操作 一.在线性表尾部添加元素 二.在位置i处插入元素 三.顺序表(有 ...
- 数据结构与算法(一) 线性表之顺序表
线性表是一种最简单.最常用的数据结构,根据存储方式可以分为顺序表和链表. 顺序表: 顺序表指的是用一组地址连续的存储单元依次存储线性表的数据元素,称为线性表的顺序存储结构或顺序映像(sequent ...
- 线性表的顺序表示和实现(严蔚敏版)
线性表的顺序表示和实现 定义变量 初始化线性表 插入元素 删除线性表中的元素 查询 输出线性表 合并两个表 逻辑运行(main) 后续 定义变量 #include<stdio.h> //输 ...
- 数据结构之线性表(顺序表和链表)
线性表 首先线性表的定义就是:零个或多个数据元素的有限序列. 列如高考前每个班级排队照准考证,这个队伍就可以看做一个线性表,大家都井然有序的排着队,是一个有限的序列,一个班就那么几十个人,而且每个人之 ...
- Java数据结构与算法_线性表_顺序表与链表
文章目录 线性表 顺序表 顺序表API设计 顺序表的代码实现 链表 单向链表 双向链表 总结 线性表 概述 线性表是最基本.最简单.也是最常用的一种数据结构. 一个线性表是n个具有相同特性的数据元素的 ...
- 数据结构——线性表:顺序表、单链表、双链表(C++)
内容概要: 1.代码部分: 线性表抽象类 顺序表类 单链表类 双链表类 主函数 2.基本概念及注意事项 代码(测试环境VS2017): //线性表ADT类的定义:ADT_List.htemplate ...
最新文章
- 和晋叔吹B讨论业务驱动与架构演进
- Android的开机流程
- chromium浏览器_Chromium版Edge浏览器正式上线:安装包仅2.2MB
- 5M1E,软件质量管理最佳解决方案
- redis保存dataset
- 编译时类型 和运行时类型的 区别(1)
- sharedpreferences使用方法_Google 推荐在 MVVM 架构中使用 Kotlin Flow
- 运行时数据区——Java虚拟机栈
- iis7.5站点为共享文件的设置
- Volley 源码解析(一)
- 「00后缩写黑话翻译器」登上GitHub热榜,中年网民终于能看懂年轻人的awsl
- Adobe Photoshop 7.0.1 简体中文版注册码
- Jenkins不能正常trigger
- 【IC卡】终极版复卡器操作方法 ID卡读取方法
- RuoYi(若依)平台页面缓存无效
- win配置pm2开机自启node项目
- 51nod 1278 相离的圆 二分+排序
- NER综述 | 命名实体识别的过去和现在
- [原创]FPS网络游戏自动瞄准自瞄外挂漏洞分析以及实现
- 豆瓣上《特权和寻租的经济学》的书评
热门文章
- 软件测试人员如何持续提升自己的技术水平?从以下几点做起
- c语言寻峰算法,寻峰算法总结报告
- html 保存草稿,利用localStorage实现对ueditor编辑内容定时保存为草稿,ueditor草稿箱...
- vue移动端,使用腾讯提供的JS SDK实现第三方登录
- @GeneratedValue与@GenericGenerator区别
- 区块链的跨链技术简介
- 公共盘(网络盘)打开慢
- 六区哈卡服务器无限公会,魔兽怀旧服:哈卡硬币被改,加声望不加经验,秒升62级是不可能了...
- aggregate vs treeAggregate
- 论文:Aurora Guard_ Real-Time Face Anti-Spoofing via Light Reflection