博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构之顺序表的实现
阅读量:2144 次
发布时间:2019-04-30

本文共 1298 字,大约阅读时间需要 4 分钟。

线性表的实现分顺序存储结构和链式存储结构。

 

顺序表属于线性表的一种,是用一组地址连续的存储单元依次来实现对元素的存储。

 

但是,顺序结构最大的缺点就是在进行插入和删除操作的时候,如果插入位置不理想,那么需要移动大量的元素。可以发现在顺序存储结构中,他们相邻的元素的存储位置也是相邻的,在申请内存的的时候,是一次性申请一块连续的内存,中间是没有空隙的,这样也就没办法进行快速的插入,如果进行删除操作,就需要进行位置的填充。

 

顺序结构最大的好处就是可以快速的存取表中的任一位置的元素。

#include 
#include
#define OK 1#define ERROR 0#define OVERFLOW -2#define LISTINCREMENT 10typedef int Status; //Status 是函数返回值类型,其值是函数结果状态代码。typedef int ElemType; //ElemType 为可定义的数据类型,此设为int类型#define LIST_INIT_SIZE 100 //顺序表可能达到的最大长度typedef struct { ElemType *elem; int length; int listsize;}SqList;//初始化Status InitList(SqList &L){ L.elem = (ElemType *) malloc(LIST_INIT_SIZE * sizeof(ElemType)); if(! L.elem) exit(OVERFLOW); L.length = 0; L.listsize = LIST_INIT_SIZE; return OK;}//插入Status insertElement(SqList &L , int i , ElemType e){ if(1>i || i>L.length+1) return ERROR; if(L.length>= L.listsize){ ElemType *newbase = (ElemType *)realloc(L.elem , (L.listsize + LISTINCREMENT)*sizeof(ElemType)); if(!newbase) exit(OVERFLOW); L.elem = newbase; L.listsize += LISTINCREMENT; } ElemType *p = &(L.elem[i-1]); ElemType *q = &(L.elem[L.length-1]); for( ; q>=p ; q--){ *(q+1) = *q ; } *p = e; L.length += 1; return OK;}//在顺序表L中删除第i个元素,并用e返回其值Status deleteElement(SqList &L , int i , ElemType &e){ if(1>i || L.length
i || L.length

 

转载地址:http://twegf.baihongyu.com/

你可能感兴趣的文章
solver及其配置
查看>>
JAVA多线程之volatile 与 synchronized 的比较
查看>>
Java集合框架知识梳理
查看>>
笔试题(一)—— java基础
查看>>
Redis学习笔记(三)—— 使用redis客户端连接windows和linux下的redis并解决无法连接redis的问题
查看>>
Intellij IDEA使用(一)—— 安装Intellij IDEA(ideaIU-2017.2.3)并完成Intellij IDEA的简单配置
查看>>
Intellij IDEA使用(二)—— 在Intellij IDEA中配置JDK(SDK)
查看>>
Intellij IDEA使用(三)——在Intellij IDEA中配置Tomcat服务器
查看>>
Intellij IDEA使用(四)—— 使用Intellij IDEA创建静态的web(HTML)项目
查看>>
Intellij IDEA使用(五)—— Intellij IDEA在使用中的一些其他常用功能或常用配置收集
查看>>
Intellij IDEA使用(六)—— 使用Intellij IDEA创建Java项目并配置jar包
查看>>
Eclipse使用(十)—— 使用Eclipse创建简单的Maven Java项目
查看>>
Eclipse使用(十一)—— 使用Eclipse创建简单的Maven JavaWeb项目
查看>>
Intellij IDEA使用(十三)—— 在Intellij IDEA中配置Maven
查看>>
面试题 —— 关于main方法的十个面试题
查看>>
集成测试(一)—— 使用PHP页面请求Spring项目的Java接口数据
查看>>
使用Maven构建的简单的单模块SSM项目
查看>>
Intellij IDEA使用(十四)—— 在IDEA中创建包(package)的问题
查看>>
Redis学习笔记(四)—— redis的常用命令和五大数据类型的简单使用
查看>>
Win10+VS2015编译libcurl
查看>>