数据结构初阶 顺序表补充

简介: 数据结构初阶 顺序表补充

一. 题目的要求


写出三种链表的接口函数


它们的功能分别是


1 查找数的位置


2 在pos位置插入值


3 在pos位置删除值


二. 实现pos


这个其实很简单 找到一步步遍历 找到这个数字就返回 找不到就提示用户下 这

个数字不存在


int SeqListFind(SL* ps,int x)
{
  int i;
  for ( i = 0; i < ps->size; i++)
  {
    if (ps->a[i]==x)
    {
      return i;
    }
  }
  if (i==ps->size)
  {
    printf("不存在这个数");
  }
  return -1;
}


三. 实现在pos位置处插入数字


这个其实和我们的头插表示差不多


只要找到pos的位置


首先判断需不需要扩容


然后再将需要插入的数字依次向后面的排一位


之后再将这个数字插入就好


代码表示如下


void SeqListPushPos(SL* ps, int x, int y)
{
  if ((ps->size) == (ps->capacity))
  {
    int newcapacity = ps->capacity == 0 ? 4 : ps->capacity * 2;
    ps->capacity = newcapacity;
    SLDateType* tmp = (SLDateType*)realloc(ps->a, newcapacity * sizeof(SLDateType));
    if (tmp == NULL)
    {
      perror("pushback realloc");
    }
    ps->a = tmp;
  }
  // 其实效果和头插差不多 
  // 只不过头插的起始位置有点变化了
  int i;
  for (i = ps->size - 1; i >= x; i--)
  {
    (ps->a[i + 1]) = (ps->a[i]);
  }
  ps->a[x] = y;
  ps->size++;
}


四. 在pos处删除数字


这个和头删也差不多


只需要也只不过是前面0的界限变成pos的界限


代码表示如下


void SeqListPopPos(SL* ps, int x)
{
  assert(ps->size != 0);
  int i;
  for ( i =x; i <ps->size-1 ; i++)
  {
    ps->a[i] = ps->a[i + 1];
  }
  ps->size--;
}


演示代码如下


int main()
{
  SL a1;
  SeqListInit(&a1);
  SeqListPushFront(&a1, 1);
  SeqListPushFront(&a1, 2);
  SeqListPushFront(&a1, 3);
  SeqListPushFront(&a1, 4);
  SeqListPushFront(&a1, 5);
  SeqListPrint(&a1);
  int pos=SeqListFind(&a1, 4);
  SeqListPushPos(&a1, pos, 6);
  SeqListPrint(&a1);
  pos = SeqListFind(&a1, 3);
  SeqListPopPos(&a1, pos);
  SeqListPrint(&a1);
  return 0;
}


演示效果如下


37837c5ed93243e39c615aa37fcaba0d.png


五 使用pos函数来模拟头增 头删 尾增 尾删


// 演示
SeqListPushPos(&a1, 0, 6);
SeqListPushPos(&a1, size-1, 6);
SeqListPopPos(&a1, 0, 6);
SeqListPopPos(&a1, size-1, 6);


以上就是本篇博客的全部内容啦 由于博主才疏学浅 所以难免会出现纰漏


希望大佬们看到错误之后能够不吝赐教 在评论区或者私信指正 博主一定及时修正


那么大家下期再见咯

相关文章
|
2月前
|
存储 编译器 C语言
数据结构-顺序表详解(看这篇就足够了,哈哈哈)
数据结构-顺序表详解(看这篇就足够了,哈哈哈)
70 2
|
1天前
|
数据库
数据结构中二叉树,哈希表,顺序表,链表的比较补充
二叉搜索树,哈希表,顺序表,链表的特点的比较
数据结构中二叉树,哈希表,顺序表,链表的比较补充
|
1月前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之顺序表【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
顺序表的定义和基本操作之插入;删除;按值查找;按位查找等具体详解步骤以及举例说明
|
1月前
|
存储 C语言
【数据结构】顺序表(c语言实现)(附源码)
本文介绍了线性表和顺序表的基本概念及其实现。线性表是一种有限序列,常见的线性表有顺序表、链表、栈、队列等。顺序表是一种基于连续内存地址存储数据的数据结构,其底层逻辑是数组。文章详细讲解了静态顺序表和动态顺序表的区别,并重点介绍了动态顺序表的实现,包括初始化、销毁、打印、增删查改等操作。最后,文章总结了顺序表的时间复杂度和局限性,并预告了后续关于链表的内容。
82 3
|
1月前
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之顺序表习题精讲【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
顺序表的定义和基本操作之插入;删除;按值查找;按位查找习题精讲等具体详解步骤以及举例说明
|
2月前
|
存储 Java
数据结构第二篇【关于java线性表(顺序表)的基本操作】
数据结构第二篇【关于java线性表(顺序表)的基本操作】
46 6
|
2月前
|
存储 安全 Java
【用Java学习数据结构系列】探索顺序表和链表的无尽秘密(附带练习唔)pro
【用Java学习数据结构系列】探索顺序表和链表的无尽秘密(附带练习唔)pro
28 3
|
2月前
|
存储
数据结构(顺序表)
数据结构(顺序表)
31 0
|
2月前
|
存储 算法
【数据结构】新篇章 -- 顺序表
【数据结构】新篇章 -- 顺序表
23 0
|
2月前
|
存储 测试技术
探索数据结构:顺序表的实现与应用
探索数据结构:顺序表的实现与应用

热门文章

最新文章