线性表

似梦清欢
• 阅读 477

线性表的顺序存储实现(数组形式)称为顺序表。

线性表顺序表示原理解析

线性表 线性表 这里描述的线性表是逻辑结构的,独立于存储结构。 线性表的顺序表示简称顺序表。 线性表 顺序表实现线性表的方式是使用数组。 线性表 线性表 线性表 线性表第一个元素的数组下标是0。 线性表 线性表

另外一种实现顺序表的方法:

线性表 使用数组方式比动态分配更简单常用。 动态分配的数组仍属于顺序存储结构。


顺序表的初始化插入、删除、查询代码
#include <stdio.h>

#define MaxSize 50
typedef    int Elemtype;  //定义ElemSize为int类型,当ElemSize的类型发生改变时可以迅速完成代码修改
typedef struct {
    Elemtype data[MaxSize];
    int length;  //顺序表长度
}SqList;
bool ListInsert(SqList& L, int i, Elemtype element)  //插入会改变顺序表L
{
    if (i >= 1 && i <= L.length + 1)  //判断插入位置i是否合法
    {
        if (MaxSize >= L.length)  //判断存储空间是否已满
        {
            for (int j = L.length; j >= i; j--)
            {
                L.data[j] = L.data[j - 1];  //要插入位置后的元素后移
            }
            L.data[i - 1] = element;  //放入要插入的元素
            L.length++;  //插入后顺序表的长度+1
            return true;  //插入成功返回true
        }
    }
    return false;
}
void PrintSqList(SqList L)  //打印顺序表
{
    for (int i = 0; i < L.length ; i++)
    {
        printf("%3d", L.data[i]);
    }
    printf("\n");
}
bool ListDelete(SqList& L, int i, Elemtype& del)  //删除会改变顺序表L,del获取删除元素的值
{
    if (i < 1 || i > L.length + 1)  //判断删除位置i是否合法
    {
        return false;
    }
    del = L.data[i - 1];
    for (i; i <= L.length; i++)
    {
        L.data[i - 1] = L.data[i];
    }
    L.length--;
}
int LocateElem(SqList L, Elemtype element)  //查找元素
{
    for (int i = 0; i < L.length; i++)
    {
        if (element == L.data[i])
        {
            return i + 1;  //i是数组下标,i+1后才是顺序表的下标
        }
    }
    return 0;
}
int main()
{
    SqList L;  //定义顺序表L
    bool ret;  //bool是类型
    //顺序表元素定义
    L.data[0] = 3;
    L.data[1] = 12;
    L.data[2] = 73;
    L.data[3] = 84;
    L.data[4] = 25;
    L.data[5] = 65;
    L.length = 6;  //设置顺序表长度
    PrintSqList(L);
    ret = ListInsert(L, 2, 10);  //传入顺序表L、要插入的位置、要插入的数值
    if (ret)  //true值为1,false值为0
    {
        printf("Insert SqList Success\n");
        PrintSqList(L);
    }
    else
    {
        printf("Insert SqList failed\n");
    }
    Elemtype del;
    ret = ListDelete(L, 3, del);  //传入顺序表L、要删除的位置、要删除的数值
    if (ret)  //true值为1,false值为0
    {
        printf("Delete SqList Success\n");
        PrintSqList(L);
        printf("要删除的元素是:%d\n", del);
    }
    else
    {
        printf("Delete SqList failed\n");
    }
    int pos;  //存储元素位置
    pos = LocateElem(L, 824);
    if (pos)
    {
        printf("要查询的元素位置在顺序表中第%d个\n",pos);
    }
    else
    {
        printf("顺序表中没有要查询的元素\n");
    }
    return 0;
}
点赞
收藏
评论区
推荐文章
22 22
3年前
【数据结构之链表】看完这篇文章我终于搞懂链表了
一览:本文从零介绍链式存储结构的线性表——单链表。包括以下内容:什么是链式存储存储结构?单链表的结构辨析头结点、头指针等易混淆概念基本的增删改查操作(不带头结点和带头结点)单链表与顺序表的对比线性表的链式存储结构在一文中我们介绍了一种“用曲线连接”的线性表,“曲线”是一种形象化的语言,实际上并不会存在所谓“曲线”的这种东西。所谓“曲线连
22 22
3年前
【数据结构之栈】用详细图文把「栈」搞明白(原理篇)
【系列文章合集】顺序存储结构的线性表(https://mp.weixin.qq.com/s/OGbxsh0aNh1woHA85weZw)如何掌握C语言的一大利器——指针?(https://mp.weixin.qq.co
似梦清欢 似梦清欢
1年前
查找算法
顺序查找顺序查找又称为线性查找,对线性表和链表都适用。线性表可以通过数组下标递增来顺序扫描每个元素,链表可以通过next指针依次扫描每一个元素。:::tip指针实现顺序表时,顺序表中是指针时,在定义顺序表的结构体后,需要对顺序表初始化,初始化时为指针申请堆
22 22
3年前
【数据结构之顺序表】用图和代码让你搞懂顺序结构线性表
什么是线性表?所谓线性,即一条线,这条线可以是直线,也可以是曲线。所谓表,肯定都不陌生,生活中有各种各样的表或者表格。我们在表格中填写各种各样的信息,通过表格,能够很好地对信息进行分类储存和分析。表的特点有:表由若干单元格组成单元格之间有顺序除特殊位置的单元格(首起和结尾)有一个“邻居”外,其他单元格都有两个“邻居”。那么什么是线性表呢?简单来说,就是
Wesley13 Wesley13
3年前
Java实现顺序栈
一、分析  栈是限定仅在表的一端进行插入或删除操作的线性表,对于栈来说,操作端称为栈顶,另一端则称为栈底,栈的修改是按照后进先出的原则进行的,因此又称为后进先出的线性表。  顺序栈是指利用顺序存储结构实现的栈,即利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素在顺序栈中的位置。  一个标准的顺序栈
Wesley13 Wesley13
3年前
D1
1\.数据结构  1.1线性结构  (1)最常用的数据结构,特点是数据元素之间存在一对一的线性关系  (2)有两种不同的存储结构,即顺序存储结构和链式存储结构    顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的    链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息
Wesley13 Wesley13
3年前
C++ 顺序表 代码实现
线性表存储在计算机中可以采用多种方式,以下是按照顺序存储方式实现:优点:查找很方便缺点:插入元素、删除元素比较麻烦,时间复杂度O(n)1ifndefSeqList_h2defineSeqList_h3include<iostream4usingnamespacestd;
Wesley13 Wesley13
3年前
C#二分查找算法设计实现
C二分查找算法设计实现1.介绍二分查找也称折半查找(BinarySearch),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。(记住了前提要求是顺序存储结构,而且要有序排序,所以说对于一个无序的是没法用二分查找的)2.查找算法过程
Wesley13 Wesley13
3年前
C语言利用动态数组实现顺序表(不限数据类型)
实现任意数据类型的顺序表的初始化,插入,删除(按值删除;按位置删除),销毁功能。、顺序表结构体  实现顺序表结构体的三个要素:(1)数组首地址;(2)数组的大小;(3)当前数组元素的个数。1//顺序表结构体2structDynamicArray{3voidaddr;//指向数组的首地址(
Wesley13 Wesley13
3年前
PHP优先级队列
优先级队列首先,我们要了解一下什么叫队列:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。从定义来看,队列是无法更改顺序的线性集合。线性集合一般有几种规则:先进先出(队
似梦清欢
似梦清欢
Lv1
学海无涯
文章
17
粉丝
17
获赞
17