资讯专栏INFORMATION COLUMN

【小白】线性表的顺序存储结构的实现(C语言)

MarvinZhang / 766人阅读

摘要:希望能够把自己的代码分享给有需要的同学们,一起进步。实现语言为语言,发博客之前已检查了能否运行成功。

@【TOC】(目录)第一章:线性表


前言

数据结构作为计算机系的最重要课程是计算机系学生必修课,我们需要引起足够的重视。希望能够把自己的代码分享给有需要的同学们,一起进步。实现语言为C语言,发博客之前已检查了能否运行成功。
学习教材:数据结构(C语言版)-严蔚敏 吴伟民
代课教师:呼克佑(太原理工大学讲师)
作者简介: 中部某末流211软院大二学生

一、数据结构是什么?

数据结构是计算机存储、组织数据的方式

二、线性表的顺序存储方式的实现

1.实现所需的主要函数

int InitList(SqList *L);int DestroyList(SqList *L);int ListEmpty(SqList L);int ListLength(SqList L);int GetElem(SqList L, int i, int *e);int ListInsert(SqList *L, int i, int e);int ListDelete(SqList *L, int i, int *e);int  LocateElem(SqList L,int e);void GetElems(SqList L);

2.常量定义

#define LIST_SIZE 10#define OVERFLOW 1#define OK 0#define OVERFLOW -1#define TRUE 1#define FALSE 0#define ERROR 0

3.定义结构体

typedef struct SqList{    int  *data;    int length;};

4.实现

4.1初始化,构建新的线性表

int InitList(struct  SqList *L){    L->data = (int *) malloc(sizeof(int) * LIST_SIZE);    //申请内存不成功    if(!L->data)        return ERROR;    L->length = 0;    return OK;}

4.2销毁线性表

int DestroyList(struct SqList *L){    free(L->data);    L->length = 0;    L->data = NULL;    return OK;}

4.3判断线性表是否为空

int ListEmpty(struct SqList L){    if(L.length < 1)        return TRUE;    else         return FALSE;}

4.4获取线性表长度

int ListLength(struct SqList L){   return L.length;}

4.5获取线性表中第i个元素,并将值返回给e

int GetElem(struct SqList L, int i,int *e){    if(i < 1 ||i > L.length )        return ERROR;    *e = L.data[i-1];    return OK;}

4.6在线性表的第i个位置插入元素e

//将第i个位置以后的元素依次都往后移一个单位空间,将e插入第i个位置int ListInsert(struct SqList *L, int i, int e){    if(i < 1 || i > L->length + 1)        return ERROR;    for(int j = i-1; j <L->length-1;j++)        L->data[j+1] = L->data[j];    L->data[i-1] = e;     L->length++;   return OK;}

4.7在线性表中删除第i个位置的元素

//将i+1个以后的元素依次向前移一个单位空间int ListDelete(struct SqList *L, int i,int *e){    if(i < 1 || i > L->length)        return ERROR;    *e = L->data[i-1];    for(int j = L->length-1; j > L->length-1; j--)        L->data[j-1] = L->data[j];    L->length--;    return OK;}

4.8查找顺序表中与给定值e相等的元素,若成功则返回该元素在表中的位置,否则返回0

int  LocateElem(struct SqList L,int e){    int i;    for(i = 0; i < L.length; i++)        if(L.data[i] == e)             return i+1;    return 0;}

4.8获取线性表中的所有元素

void GetElems(SqList L){    for(int i = 1; i <= L.length; i++)        printf("线性表中第%d个元素是%d/n",i,L.data[i-1]);}

总结

线性表的顺序存储结构优点:随机存取缺点:不适用频繁的插入和删除,效率不高,时间复杂度O(n)

【小白】线性表的顺序存储结构的实现(C语言)

下一节:线性表的链式存储结构的实现

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/121136.html

相关文章

  • 数据结构线性

    摘要:线性表是最基本的数据结构之一,在实际程序中应用非常广泛,它还经常被用作更复杂的数据结构的实现基础。链表之单链表线性表的定义,它是一些元素的序列,维持着元素之间的一种线性关系。 线性表学习笔记,python语言描述-2019-1-14 线性表简介 在程序中,经常需要将一组(通常是同为某个类型的)数据元素作为整体管理和使用,需要创建这种元素组,用变量记录它们,传进传出函数等。一组数据中包含...

    leoperfect 评论0 收藏0
  • 计算机二级考试-数据结构-模拟试题

    摘要:数据结构试题前言这里是数据结构系列文章,主要介绍计算机二级考试中的涉及到数据结构的知识点数据结构在计算机科学中处处都有存在,例如编译系统要使用栈散列表语法树等操作系统要使用队列存储管理表目录树等等。 数据结构 试题前言这里是 数据结构 系列文章,主要介绍计算机二级考试中的涉及到数据结构的知识点 /数据结构在计算...

    不知名网友 评论0 收藏0
  • js数据结构和算法(一)概述

    摘要:程序设计数据结构算法数据结构数据结构就是关系,没错,就是数据元素相互之间存在的一种或多种特定关系的集合。物理结构是指数据的逻辑结构在计算机中的存储形式。 程序设计=数据结构+算法 数据结构 数据结构就是关系,没错,就是数据元素相互之间存在的一种或多种特定关系的集合。 传统上,我们把数据结构分为逻辑结构和物理结构。 逻辑结构:是指数据对象中数据元素之间的相互关系,也是我们今后最...

    xumenger 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<