静态顺序表及基本操作具体实现 1

简介: 静态顺序表及基本操作具体实现

🎑定义一个顺序表

//创建静态线性表
typedef int DataType;
typedef struct SeqList
{
  DataType a[MAX];
  int size;
}SeqList;

🎑 初始化——置空顺序表

//初始化——置空顺序表
void SQList_Init(SeqList* p)
{
  p->size = 0;
}

🎑创建一个顺序表

//创建一个顺序表
void SQList_Create(SeqList* p)
{
  int n,i;
  printf("请输入元素的个数>\n");
  scanf("%d", &n);
  printf("请依次输入元素>\n");
  for (i = 0; i < n; i++)
  {
    scanf("%d", &p->a[i]);
    p->size++;
  }
  printf("\n");
}

🎑打印顺序表各结点的值

//打印顺序表各结点的值
void SQList_Print(SeqList* p)
{
  int i = 0;
  for (i = 0; i < p->size; i++)
  {
    printf("%-3d", p->a[i]);
  }
  printf("\n");
}

🎊🎊 顺序表基本操作

🎃头插

//头插
void SQList_PushFront(SeqList* p,DataType x)
{
  int i;
  if (p ->size == MAX)
  {
    printf("顺序表是满的!\n");
    exit(-1);
  }
  for (i = p->size; i >= 0; i--)
  {
    p->a[i] = p->a[i - 1];
  }
  p -> a[0] = x;
  p->size++;
}

🎃尾插

//尾插
void Push_Back_SQList(SeqList* p,DataType x)
{
  if (p->size == MAX)
  {
    printf("顺序表是满的!\n");
    exit(-1);
  }
  p->a[p->size] = x;
  p->size++;
}

🎃头删

//头删
void SQList_Pop_Front(SeqList* p)
{
  int i;
  if (p->size == 0)
  {
    printf("顺序表是空的!\n");
    exit(-1);
  }
  for (i = 1; i >= 0; i--)
  {
    p->a[i - 1] = p->a[i];
  }
  p->size--;
  printf("\n");   
}

🎃尾删

//尾删
void SQList_Pop_Back(SeqList* p)
{
  p->size--;

🎊🎊查找

🎋查找第i个节点的值

//查找第i个节点的值(0,1...p->size-1)
DataType SeqList_Get(SeqList* p,int i)
{
  if (i < 0 || i >= p->size)
  {
    printf("指定位置的结点不存在~\n");
    exit(-1);
  }
  return p ->a[i];
}

🎋查找值为x的结点

//查找值为x的结点
void SeqList_Find(SeqList* p,DataType x)
{
  int i = 0;
  for (i = 0; i < p->size; i++)
  {
    if (p->a[i] == x)
    {
      printf("找到了!\n");
      printf("下标为%d", i);
    }
  }
}

🎋在主函数中实现

  //查找第i个节点的值
  printf("------查找第i个节点的值------\n");
  printf("请输入查找的结点\n");
  int i;
  scanf("%d", &i);
  printf("\n第%d个结点的值为%d\n", i,SeqList_Get(&s, i));
  //查找值为a的结点
  printf("------查找值为a的结点------\n");
  int a;
  printf("请输入要查找的值>\n");
  scanf("%d", &a);
  SeqList_Find(&s, a);

🎊🎊插入

🎋在第i个位置添加元素x

//插入—— 在第i个位置添加元素x
void SeqList_Insert(SeqList* p, int i, DataType x)
{
  int j;
  if (i <= 0 || i >= p->size)
  {
    printf("插入位置不在范围内!\n");
    exit(-1);
  }
  if (p->size == MAX)
  {
    printf("线性表已满!\n");
    exit(-1);
  }
  for (j = p->size; j > i; j--)
    p->a[j] = p->a[j-1];
  p->a[i] = x;
  p->size++;
}


相关文章
|
29天前
|
存储 C语言 索引
你真的了解线性表中的顺序表了吗?(静态与动态顺序)
你真的了解线性表中的顺序表了吗?(静态与动态顺序)
41 0
|
1月前
|
存储 C语言
数据结构之线性表的初始化及其操作
数据结构之线性表的初始化及其操作
33 0
|
2月前
|
存储 C语言 C++
数据结构基础详解(C语言) 顺序表:顺序表静态分配和动态分配增删改查基本操作的基本介绍及c语言代码实现
本文介绍了顺序表的定义及其在C/C++中的实现方法。顺序表通过连续存储空间实现线性表,使逻辑上相邻的元素在物理位置上也相邻。文章详细描述了静态分配与动态分配两种方式下的顺序表定义、初始化、插入、删除、查找等基本操作,并提供了具体代码示例。静态分配方式下顺序表的长度固定,而动态分配则可根据需求调整大小。此外,还总结了顺序表的优点,如随机访问效率高、存储密度大,以及缺点,如扩展不便和插入删除操作成本高等特点。
181 5
|
6月前
|
C++
数据结构(顺序表 动态定义
数据结构(顺序表 动态定义
31 2
|
5月前
|
算法
数据结构和算法学习记录——复习静态顺序表的两个接口函数(在指定位置插入数据,在指定位置删除数据)
数据结构和算法学习记录——复习静态顺序表的两个接口函数(在指定位置插入数据,在指定位置删除数据)
21 0
|
6月前
浅谈顺序表基本操作
浅谈顺序表基本操作
实现顺序表增删查改的基本操作(纯代码版)
实现顺序表增删查改的基本操作(纯代码版)
|
人工智能 C语言
线性表的定义和基本操作
线性表的定义和基本操作
132 0
静态顺序表及基本操作具体实现 2
静态顺序表及基本操作具体实现
42 0
|
存储 安全
详解初阶数据结构之顺序表(SeqList)——单文件实现SeqList的增删查改
详解初阶数据结构之顺序表(SeqList)——单文件实现SeqList的增删查改