顺序表

作者: 错误快停 | 来源:发表于2023-03-22 15:18 被阅读0次

```c

//头文件

#ifndef _SEQULIST_H_

#define _SEQULIST_H_

#define MAXSIZE  100

typedef int datatype;

typedef  struct {

    datatype a[MAXSIZE];

    int size;

}

sequence_list;

#endif

/*该代码定义了一个结构体 sequence_list,其中包含一个数组 a 和一个整型变量 size,表示该顺序表的大小。然后使用了预编译指令 #define 定义了常量 MAXSIZE,表示数组 a 的最大长度为 100。

然而,在 #define 宏定义时,应该去掉等号,即应该写成:

#define MAXSIZE 100

因此,该代码会报错。*/

//函数体

#include<stdio.h>

#include<stdlib.h>

#include"sequlist.h"

//顺序表的初始化--置空表

void init(sequence_list *slt)

{

    slt->size=0;

}

void append(sequence_list *slt,datatype x)

{

    if(slt->size==MAXSIZE)

    {printf("顺序表是满的");exit(1);}

    slt->a[slt->size]=x;

    slt->size=slt->size+1;

}

void display(sequence_list slt)

{

    int i;

    if(!slt.size) printf("\n顺序表是空的!");

    else

        for(i=0;i<slt.size;i++)

    {

        printf("%5d",slt.a[i]);

    }

}

int empty(sequence_list slt)

{

    return (slt.size==0 ? 1:0);

}

int find(sequence_list slt ,datatype x)

{

    int i=0;

    while(i<slt.size&&slt.a[i]!=x) i++;{

        return i<slt.size? 1:0;

    }

}

datatype get(sequence_list slt,int i)

{

    if(i<0 || i>=slt.size)

    {printf("\n指定位置不存在");exit(1);}

    else

        return slt.a[i];

}

void insert(sequence_list *slt,datatype x,int position)

{

    int i;

    if(slt->size==MAXSIZE)

    {printf("\n顺序表是满的,无法插入");exit(1);}

    if(position<0||position>slt->size)

    {printf("\n指定 插入不存在");exit(1);}

    for(i=slt->size;i>position;i--) slt->a[i] = slt->a[i-1];

    slt->a[position]=x;

    slt->size++;

}

void dele(sequence_list *slt,int position)

{

    int i;

    if(slt->size==0)

    {printf("\n顺序表是空的");exit(1);}

    if(position<0||position>=slt->size)

    {printf("\n指定的位置不存在");exit(1);}

    for(i=position;i<slt->size-1;i++) slt->a[i]= slt->a[i+1];

    slt->size--;

}

//主函数

#include <stdio.h>

#include <stdlib.h>

#include "sequlist.h"

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {

    {

        sequence_list slt;

        init(&slt); // 初始化顺序表

        append(&slt, 1);

        append(&slt, 2);

        append(&slt, 3);

        printf("顺序表中的元素为:");

        display(slt); // 显示顺序表中的元素

        printf("\n");

        printf("顺序表是否为空:%d\n", empty(slt)); // 判断顺序表是否为空

        printf("元素2是否在顺序表中:%d\n", find(slt, 2)); // 判断元素2是否在顺序表中

        printf("第2个元素为:%d\n", get(slt, 1)); // 获取第2个元素

        insert(&slt, 10, 1); // 在第2个位置插入元素10

        printf("插入元素10后,顺序表中的元素为:");

        display(slt);

        printf("\n");

        dele(&slt, 2); // 删除第3个元素

        printf("删除第3个元素后,顺序表中的元素为:");

        display(slt);

        printf("\n");

    }

    return 0;

}

```

相关文章

  • 数据结构与算法(二,线性表的顺序存储结构,穷举法(冒泡和选择排序

    线性表 顺序表 顺序表的特性 顺序表的元素有前驱和后继 顺序表有size 顺序表的增删改查 顺序表的优缺点优点:尾...

  • 顺序表-动态顺序表

    顺序表是逻辑上相邻的元素物理也相邻的。 静态内存是指在程序开始运行时由编译器分配的内存,它的分配是在程序开始编译时...

  • 顺序表-静态顺序表

    线性表,全名为线性存储结构。将具有“一对一”关系的数据“线性”地存储到物理空间中,这种存储结构就称为线性存储结构(...

  • 线性表之顺序存储-顺序表

    顺序表的操作 [x] 向有序顺序表插入一个元素 [x] 顺序表的冒泡排序 [x] 顺序表的删除操作 [x] 顺序表...

  • 数据结构之线性表

    1、线性表-顺序表线性表-顺序表

  • 线性表-顺序表与单链表

    顺序表 线性表的顺序存储,是逻辑相邻,物理存储地址也相邻。 结构定义 顺序表的初始化 顺序表的插入 顺序表的取值 ...

  • 顺序表和链表的区别

    参考:线性表和链表的区别 注:参考文中的‘线性表’准确的说应该是’顺序表‘,链表与顺序表都是线性表。 顺序表:顺序...

  • 快速理解数据结构中链表

    组织数据作用的线性表分为顺序表和链表 顺序表:平常所使用的各类数组均为顺序表,即存储逻辑顺序和物理顺序相同。较常见...

  • 顺序表

    在程序中,经常需要将一组(通常是同为某个类型的)数据元素作为整体管理和使用,需要创建这种元素组,用变量记录它们,传...

  • 顺序表

    https://blog.csdn.net/qq_41943578/article/details/82934644

网友评论

      本文标题:顺序表

      本文链接:https://www.haomeiwen.com/subject/jpxbrdtx.html